From 4f04aa47b75d8942a9c7acf9a967d84a3077702c Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Fri, 19 Apr 2019 10:50:15 +0200 Subject: [PATCH] Fixing tests with word arrays/pointers. Preparing for #139 --- .../kickc/passes/Pass1PointerSizeofFix.java | 10 +- src/main/kc/stdlib/sinus.kc | 6 +- src/test/kc/examples/scrolllogo/scrolllogo.kc | 3 +- src/test/kc/signed-indexed-subtract.kc | 9 +- src/test/kc/sinusb.kc | 3 +- src/test/kc/sinusgen16b.kc | 4 +- src/test/kc/test-division.kc | 4 +- .../ref/examples/scrolllogo/scrolllogo.asm | 25 +- .../ref/examples/scrolllogo/scrolllogo.cfg | 419 +- .../ref/examples/scrolllogo/scrolllogo.log | 3949 ++++++------ .../ref/examples/scrolllogo/scrolllogo.sym | 6 +- src/test/ref/sinusgen16b.asm | 17 +- src/test/ref/sinusgen16b.cfg | 8 +- src/test/ref/sinusgen16b.log | 202 +- src/test/ref/sinusgen16b.sym | 1 + src/test/ref/sinusgenscale8.log | 2 + src/test/ref/test-division.asm | 28 +- src/test/ref/test-division.cfg | 612 +- src/test/ref/test-division.log | 5512 +++++++++-------- src/test/ref/test-division.sym | 18 +- 20 files changed, 5488 insertions(+), 5350 deletions(-) diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1PointerSizeofFix.java b/src/main/java/dk/camelot64/kickc/passes/Pass1PointerSizeofFix.java index ebef5d865..d65317d26 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1PointerSizeofFix.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1PointerSizeofFix.java @@ -10,14 +10,16 @@ import dk.camelot64.kickc.model.statements.Statement; import dk.camelot64.kickc.model.statements.StatementAssignment; import dk.camelot64.kickc.model.symbols.Variable; import dk.camelot64.kickc.model.symbols.VariableIntermediate; -import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.types.SymbolTypeInference; import dk.camelot64.kickc.model.types.SymbolTypePointer; import dk.camelot64.kickc.model.values.ConstantRef; import dk.camelot64.kickc.model.values.PointerDereferenceIndexed; import dk.camelot64.kickc.model.values.RValue; import dk.camelot64.kickc.model.values.VariableRef; -import java.util.*; +import java.util.LinkedHashMap; +import java.util.ListIterator; +import java.util.Map; /** * Fixes pointer math to use sizeof(type) @@ -61,7 +63,7 @@ public class Pass1PointerSizeofFix extends Pass1Base { VariableRef idx2VarRef = handled.getOrDefault(currentStmt, new LinkedHashMap<>()).get(deref.getIndex()); if(idx2VarRef==null) { VariableIntermediate idx2Var = getScope().getScope(currentBlock.getScope()).addVariableIntermediate(); - idx2Var.setType(SymbolType.BYTE); + idx2Var.setType(SymbolTypeInference.inferType(getScope(), deref.getIndex())); ConstantRef sizeOfTargetType = OperatorSizeOf.getSizeOfConstantVar(getProgram().getScope(), pointerType.getElementType()); StatementAssignment idx2 = new StatementAssignment(idx2Var.getRef(), deref.getIndex(), Operators.MULTIPLY, sizeOfTargetType, currentStmt.getSource(), Comment.NO_COMMENTS); stmtIt.previous(); @@ -97,7 +99,7 @@ public class Pass1PointerSizeofFix extends Pass1Base { // Adding to a pointer - multiply by sizeof() getLog().append("Fixing pointer addition " + assignment.toString(getProgram(), false)); VariableIntermediate tmpVar = getScope().getScope(block.getScope()).addVariableIntermediate(); - tmpVar.setType(SymbolType.BYTE); + tmpVar.setType(SymbolTypeInference.inferType(getScope(), assignment.getrValue2())); stmtIt.remove(); ConstantRef sizeOfTargetType = OperatorSizeOf.getSizeOfConstantVar(getProgram().getScope(), pointerType.getElementType()); stmtIt.add(new StatementAssignment(tmpVar.getRef(), assignment.getrValue2(), Operators.MULTIPLY, sizeOfTargetType, assignment.getSource(), Comment.NO_COMMENTS)); diff --git a/src/main/kc/stdlib/sinus.kc b/src/main/kc/stdlib/sinus.kc index 92143c77f..f96786387 100644 --- a/src/main/kc/stdlib/sinus.kc +++ b/src/main/kc/stdlib/sinus.kc @@ -30,8 +30,7 @@ void sin16s_gen(signed word* sintab, word wavelength) { // Iterate over the table dword x = 0; // u[4.28] for( word i=0; imul16s(sin16s(x), ampl); // The signed sin() has values [-7fff;7fff] = [-1/2 ; 1/2], so ampl*sin has the right amplitude - sintab = sintab + 2; + *sintab++ = offs + (signed word)>mul16s(sin16s(x), ampl); // The signed sin() has values [-7fff;7fff] = [-1/2 ; 1/2], so ampl*sin has the right amplitude x = x + step; } } diff --git a/src/test/kc/examples/scrolllogo/scrolllogo.kc b/src/test/kc/examples/scrolllogo/scrolllogo.kc index 55a139e9c..8980ccbdc 100644 --- a/src/test/kc/examples/scrolllogo/scrolllogo.kc +++ b/src/test/kc/examples/scrolllogo/scrolllogo.kc @@ -41,8 +41,7 @@ void loop() { (*BORDERCOL)++; signed word xpos = *(xsin+xsin_idx); render_logo(xpos); - xsin_idx += 2; - if(xsin_idx==XSIN_SIZE*2) { + if(++xsin_idx==XSIN_SIZE) { xsin_idx = 0; } (*BORDERCOL)--; diff --git a/src/test/kc/signed-indexed-subtract.kc b/src/test/kc/signed-indexed-subtract.kc index 44f2aa7aa..354cd5d64 100644 --- a/src/test/kc/signed-indexed-subtract.kc +++ b/src/test/kc/signed-indexed-subtract.kc @@ -7,14 +7,13 @@ signed word[] words = {-$6000, -$600, -$60, -6, 0, 6, $60, $600, $6000}; void main() { for(byte i: 0..8) { - byte idx = i*2; - sub(idx, $80); - sub(idx, $40); - sub(idx, $40); + sub(i, $80); + sub(i, $40); + sub(i, $40); } print_cls(); for(byte j: 0..8) { - print_sword(words[j*2]); + print_sword(words[j]); print_ln(); } diff --git a/src/test/kc/sinusb.kc b/src/test/kc/sinusb.kc index 7ee6dc795..b3b0899f7 100644 --- a/src/test/kc/sinusb.kc +++ b/src/test/kc/sinusb.kc @@ -15,8 +15,7 @@ void sin16s_genb(signed word* sintab, word wavelength) { // Iterate over the table dword x = 0; // u[4.28] for( word i=0; ix); - sintab = sintab + 2; + *sintab++ = sin16sb(>x); x = x + step; } } diff --git a/src/test/kc/sinusgen16b.kc b/src/test/kc/sinusgen16b.kc index e1c1f6868..98bee758a 100644 --- a/src/test/kc/sinusgen16b.kc +++ b/src/test/kc/sinusgen16b.kc @@ -19,7 +19,7 @@ void main() { } print_sword(sw); print_str(" "); - st1 = st1+2; - st2 = st2+2; + st1++; + st2++; } } diff --git a/src/test/kc/test-division.kc b/src/test/kc/test-division.kc index 37aeb4070..35849307b 100644 --- a/src/test/kc/test-division.kc +++ b/src/test/kc/test-division.kc @@ -32,7 +32,7 @@ void test_8u() { void test_16u() { word[] dividends = { $ffff, $ffff, $ffff, $ffff, $ffff, $ffff}; word[] divisors = { 5, 7, 11, 13, 17, 19 }; - for( byte i=0;i!=12;i=i+2) { + for( byte i : 0..5) { word dividend = dividends[i]; word divisor = divisors[i]; word res = div16u(dividend, divisor); @@ -68,7 +68,7 @@ void test_8s() { void test_16s() { signed word[] dividends = { $7fff, $7fff, -$7fff, -$7fff, $7fff, -$7fff}; signed word[] divisors = { 5, -7, 11, -13, -17, 19 }; - for( byte i=0;i!=12;i=i+2) { + for( byte i: 0..5) { signed word dividend = dividends[i]; signed word divisor = divisors[i]; signed word res = div16s(dividend, divisor); diff --git a/src/test/ref/examples/scrolllogo/scrolllogo.asm b/src/test/ref/examples/scrolllogo/scrolllogo.asm index abd236fbb..638b1528c 100644 --- a/src/test/ref/examples/scrolllogo/scrolllogo.asm +++ b/src/test/ref/examples/scrolllogo/scrolllogo.asm @@ -1,6 +1,7 @@ .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" + .const SIZEOF_SIGNED_WORD = 2 .label RASTER = $d012 .label BORDERCOL = $d020 .label BGCOL = $d021 @@ -65,6 +66,7 @@ main: { } loop: { .label _1 = 9 + .label _5 = 9 .label xpos = 9 lda #0 sta xsin_idx @@ -77,10 +79,16 @@ loop: { bne b2 inc BORDERCOL lda xsin_idx + asl + sta _5 + lda xsin_idx+1 + rol + sta _5+1 clc + lda _1 adc #xsin sta _1+1 ldy #0 @@ -91,18 +99,15 @@ loop: { stx xpos sta xpos+1 jsr render_logo - lda xsin_idx - clc - adc #2 - sta xsin_idx - bcc !+ + inc xsin_idx + bne !+ inc xsin_idx+1 !: lda xsin_idx+1 - cmp #>XSIN_SIZE*2 + cmp #>XSIN_SIZE bne b4 lda xsin_idx - cmp #> (byte/signed byte/word/signed word/dword/signed dword) 3 - [43] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3 - [44] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 + [39] (byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos#0 + [40] (byte~) render_logo::$1 ← (byte~) render_logo::$0 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [41] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1 + [42] *((const byte*) D016#0) ← (byte~) render_logo::$2 + [43] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 + [44] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3 + [45] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 to:render_logo::@2 render_logo::@2: scope:[render_logo] from render_logo render_logo::@4 - [45] (byte) render_logo::screen_idx#18 ← phi( render_logo/(byte/signed byte/word/signed word/dword/signed dword) 0 render_logo::@4/(byte) render_logo::screen_idx#3 ) - [46] if((byte) render_logo::screen_idx#18!=(byte)(signed byte) render_logo::x_char#0) goto render_logo::@3 + [46] (byte) render_logo::screen_idx#18 ← phi( render_logo/(byte/signed byte/word/signed word/dword/signed dword) 0 render_logo::@4/(byte) render_logo::screen_idx#3 ) + [47] if((byte) render_logo::screen_idx#18!=(byte)(signed byte) render_logo::x_char#0) goto render_logo::@3 to:render_logo::@5 render_logo::@5: scope:[render_logo] from render_logo::@2 render_logo::@7 - [47] (byte) render_logo::logo_idx#10 ← phi( render_logo::@7/(byte) render_logo::logo_idx#3 render_logo::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [47] (byte) render_logo::screen_idx#10 ← phi( render_logo::@7/(byte) render_logo::screen_idx#4 render_logo::@2/(byte) render_logo::screen_idx#18 ) - [48] if((byte) render_logo::screen_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@6 + [48] (byte) render_logo::logo_idx#10 ← phi( render_logo::@7/(byte) render_logo::logo_idx#3 render_logo::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [48] (byte) render_logo::screen_idx#10 ← phi( render_logo::@7/(byte) render_logo::screen_idx#4 render_logo::@2/(byte) render_logo::screen_idx#18 ) + [49] if((byte) render_logo::screen_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@6 to:render_logo::@return render_logo::@return: scope:[render_logo] from render_logo::@11 render_logo::@5 - [49] return + [50] return to:@return render_logo::@6: scope:[render_logo] from render_logo::@5 - [50] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#10) ← (byte) render_logo::logo_idx#10 + [51] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#10) ← (byte) render_logo::logo_idx#10 to:render_logo::@15_1 render_logo::@15_1: scope:[render_logo] from render_logo::@6 - [51] (byte/signed word/word/dword/signed dword~) render_logo::$34 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 - [52] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$34 + [52] (byte/signed word/word/dword/signed dword~) render_logo::$34 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$34 to:render_logo::@15_2 render_logo::@15_2: scope:[render_logo] from render_logo::@15_1 - [53] (byte/signed word/word/dword/signed dword~) render_logo::$38 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 - [54] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$38 + [54] (byte/signed word/word/dword/signed dword~) render_logo::$38 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + [55] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$38 to:render_logo::@15_3 render_logo::@15_3: scope:[render_logo] from render_logo::@15_2 - [55] (byte/signed word/word/dword/signed dword~) render_logo::$42 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 - [56] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$42 + [56] (byte/signed word/word/dword/signed dword~) render_logo::$42 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + [57] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$42 to:render_logo::@15_4 render_logo::@15_4: scope:[render_logo] from render_logo::@15_3 - [57] (byte/signed word/word/dword/signed dword~) render_logo::$46 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 - [58] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$46 + [58] (byte/signed word/word/dword/signed dword~) render_logo::$46 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + [59] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$46 to:render_logo::@15_5 render_logo::@15_5: scope:[render_logo] from render_logo::@15_4 - [59] (byte/signed word/word/dword/signed dword~) render_logo::$50 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 - [60] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$50 + [60] (byte/signed word/word/dword/signed dword~) render_logo::$50 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + [61] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$50 to:render_logo::@7 render_logo::@7: scope:[render_logo] from render_logo::@15_5 - [61] (byte) render_logo::screen_idx#4 ← ++ (byte) render_logo::screen_idx#10 - [62] (byte) render_logo::logo_idx#3 ← ++ (byte) render_logo::logo_idx#10 + [62] (byte) render_logo::screen_idx#4 ← ++ (byte) render_logo::screen_idx#10 + [63] (byte) render_logo::logo_idx#3 ← ++ (byte) render_logo::logo_idx#10 to:render_logo::@5 render_logo::@3: scope:[render_logo] from render_logo::@2 - [63] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [64] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@7_1 render_logo::@7_1: scope:[render_logo] from render_logo::@3 - [64] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@7_2 render_logo::@7_2: scope:[render_logo] from render_logo::@7_1 - [65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [66] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@7_3 render_logo::@7_3: scope:[render_logo] from render_logo::@7_2 - [66] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@7_4 render_logo::@7_4: scope:[render_logo] from render_logo::@7_3 - [67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [68] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@7_5 render_logo::@7_5: scope:[render_logo] from render_logo::@7_4 - [68] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [69] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@4 render_logo::@4: scope:[render_logo] from render_logo::@7_5 - [69] (byte) render_logo::screen_idx#3 ← ++ (byte) render_logo::screen_idx#18 + [70] (byte) render_logo::screen_idx#3 ← ++ (byte) render_logo::screen_idx#18 to:render_logo::@2 render_logo::@1: scope:[render_logo] from render_logo - [70] (signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#0 - [71] (byte~) render_logo::logo_idx#14 ← (byte)(signed byte~) render_logo::$17 + [71] (signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#0 + [72] (byte~) render_logo::logo_idx#14 ← (byte)(signed byte~) render_logo::$17 to:render_logo::@8 render_logo::@8: scope:[render_logo] from render_logo::@1 render_logo::@10 - [72] (byte) render_logo::screen_idx#21 ← phi( render_logo::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_logo::@10/(byte) render_logo::screen_idx#5 ) - [72] (byte) render_logo::logo_idx#11 ← phi( render_logo::@1/(byte~) render_logo::logo_idx#14 render_logo::@10/(byte) render_logo::logo_idx#4 ) - [73] if((byte) render_logo::logo_idx#11!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@9 + [73] (byte) render_logo::screen_idx#21 ← phi( render_logo::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_logo::@10/(byte) render_logo::screen_idx#5 ) + [73] (byte) render_logo::logo_idx#11 ← phi( render_logo::@1/(byte~) render_logo::logo_idx#14 render_logo::@10/(byte) render_logo::logo_idx#4 ) + [74] if((byte) render_logo::logo_idx#11!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@9 to:render_logo::@11 render_logo::@11: scope:[render_logo] from render_logo::@13 render_logo::@8 - [74] (byte) render_logo::screen_idx#15 ← phi( render_logo::@8/(byte) render_logo::screen_idx#21 render_logo::@13/(byte) render_logo::screen_idx#6 ) - [75] if((byte) render_logo::screen_idx#15!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@12 + [75] (byte) render_logo::screen_idx#15 ← phi( render_logo::@8/(byte) render_logo::screen_idx#21 render_logo::@13/(byte) render_logo::screen_idx#6 ) + [76] if((byte) render_logo::screen_idx#15!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@12 to:render_logo::@return render_logo::@12: scope:[render_logo] from render_logo::@11 - [76] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [77] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@32_1 render_logo::@32_1: scope:[render_logo] from render_logo::@12 - [77] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@32_2 render_logo::@32_2: scope:[render_logo] from render_logo::@32_1 - [78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [79] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@32_3 render_logo::@32_3: scope:[render_logo] from render_logo::@32_2 - [79] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@32_4 render_logo::@32_4: scope:[render_logo] from render_logo::@32_3 - [80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [81] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@32_5 render_logo::@32_5: scope:[render_logo] from render_logo::@32_4 - [81] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [82] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@13 render_logo::@13: scope:[render_logo] from render_logo::@32_5 - [82] (byte) render_logo::screen_idx#6 ← ++ (byte) render_logo::screen_idx#15 + [83] (byte) render_logo::screen_idx#6 ← ++ (byte) render_logo::screen_idx#15 to:render_logo::@11 render_logo::@9: scope:[render_logo] from render_logo::@8 - [83] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#21) ← (byte) render_logo::logo_idx#11 + [84] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#21) ← (byte) render_logo::logo_idx#11 to:render_logo::@24_1 render_logo::@24_1: scope:[render_logo] from render_logo::@9 - [84] (byte/signed word/word/dword/signed dword~) render_logo::$80 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 - [85] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$80 + [85] (byte/signed word/word/dword/signed dword~) render_logo::$80 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + [86] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$80 to:render_logo::@24_2 render_logo::@24_2: scope:[render_logo] from render_logo::@24_1 - [86] (byte/signed word/word/dword/signed dword~) render_logo::$84 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 - [87] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$84 + [87] (byte/signed word/word/dword/signed dword~) render_logo::$84 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + [88] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$84 to:render_logo::@24_3 render_logo::@24_3: scope:[render_logo] from render_logo::@24_2 - [88] (byte/signed word/word/dword/signed dword~) render_logo::$88 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 - [89] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$88 + [89] (byte/signed word/word/dword/signed dword~) render_logo::$88 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + [90] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$88 to:render_logo::@24_4 render_logo::@24_4: scope:[render_logo] from render_logo::@24_3 - [90] (byte/signed word/word/dword/signed dword~) render_logo::$92 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 - [91] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$92 + [91] (byte/signed word/word/dword/signed dword~) render_logo::$92 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + [92] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$92 to:render_logo::@24_5 render_logo::@24_5: scope:[render_logo] from render_logo::@24_4 - [92] (byte/signed word/word/dword/signed dword~) render_logo::$96 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 - [93] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$96 + [93] (byte/signed word/word/dword/signed dword~) render_logo::$96 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + [94] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$96 to:render_logo::@10 render_logo::@10: scope:[render_logo] from render_logo::@24_5 - [94] (byte) render_logo::screen_idx#5 ← ++ (byte) render_logo::screen_idx#21 - [95] (byte) render_logo::logo_idx#4 ← ++ (byte) render_logo::logo_idx#11 + [95] (byte) render_logo::screen_idx#5 ← ++ (byte) render_logo::screen_idx#21 + [96] (byte) render_logo::logo_idx#4 ← ++ (byte) render_logo::logo_idx#11 to:render_logo::@8 sin16s_gen2: scope:[sin16s_gen2] from main::@2 - [96] phi() - [97] call div32u16u - [98] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + [97] phi() + [98] call div32u16u + [99] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 to:sin16s_gen2::@2 sin16s_gen2::@2: scope:[sin16s_gen2] from sin16s_gen2 - [99] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 + [100] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 to:sin16s_gen2::@1 sin16s_gen2::@1: scope:[sin16s_gen2] from sin16s_gen2::@2 sin16s_gen2::@4 - [100] (word) sin16s_gen2::i#2 ← phi( sin16s_gen2::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen2::@4/(word) sin16s_gen2::i#1 ) - [100] (signed word*) sin16s_gen2::sintab#2 ← phi( sin16s_gen2::@2/(const signed word[XSIN_SIZE#0]) xsin#0 sin16s_gen2::@4/(signed word*) sin16s_gen2::sintab#0 ) - [100] (dword) sin16s_gen2::x#2 ← phi( sin16s_gen2::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen2::@4/(dword) sin16s_gen2::x#1 ) - [101] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 - [102] call sin16s - [103] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + [101] (word) sin16s_gen2::i#2 ← phi( sin16s_gen2::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen2::@4/(word) sin16s_gen2::i#1 ) + [101] (signed word*) sin16s_gen2::sintab#2 ← phi( sin16s_gen2::@2/(const signed word[XSIN_SIZE#0]) xsin#0 sin16s_gen2::@4/(signed word*) sin16s_gen2::sintab#0 ) + [101] (dword) sin16s_gen2::x#2 ← phi( sin16s_gen2::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen2::@4/(dword) sin16s_gen2::x#1 ) + [102] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 + [103] call sin16s + [104] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 to:sin16s_gen2::@3 sin16s_gen2::@3: scope:[sin16s_gen2] from sin16s_gen2::@1 - [104] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 - [105] call mul16s - [106] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 + [105] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 + [106] call mul16s + [107] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 to:sin16s_gen2::@4 sin16s_gen2::@4: scope:[sin16s_gen2] from sin16s_gen2::@3 - [107] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 - [108] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 - [109] (signed word~) sin16s_gen2::$8 ← (signed word)(word~) sin16s_gen2::$6 - [110] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 - [111] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [112] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 - [113] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 - [114] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1 + [108] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 + [109] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 + [110] (signed word~) sin16s_gen2::$8 ← (signed word)(word~) sin16s_gen2::$6 + [111] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 + [112] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD + [113] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 + [114] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 + [115] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1 to:sin16s_gen2::@return sin16s_gen2::@return: scope:[sin16s_gen2] from sin16s_gen2::@4 - [115] return + [116] return to:@return mul16s: scope:[mul16s] from sin16s_gen2::@3 - [116] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 - [117] call mul16u - [118] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + [117] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 + [118] call mul16u + [119] (dword) mul16u::return#2 ← (dword) mul16u::res#2 to:mul16s::@4 mul16s::@4: scope:[mul16s] from mul16s - [119] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - [120] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 + [120] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + [121] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 to:mul16s::@3 mul16s::@3: scope:[mul16s] from mul16s::@4 - [121] (word~) mul16s::$9 ← > (dword) mul16s::m#0 - [122] (word~) mul16s::$16 ← (word~) mul16s::$9 - ((word))(const signed word) sin16s_gen2::ampl#0 - [123] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 + [122] (word~) mul16s::$9 ← > (dword) mul16s::m#0 + [123] (word~) mul16s::$16 ← (word~) mul16s::$9 - ((word))(const signed word) sin16s_gen2::ampl#0 + [124] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 to:mul16s::@1 mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@4 - [124] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@4/(dword) mul16s::m#0 ) + [125] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@4/(dword) mul16s::m#0 ) to:mul16s::@2 mul16s::@2: scope:[mul16s] from mul16s::@1 - [125] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 + [126] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 to:mul16s::@return mul16s::@return: scope:[mul16s] from mul16s::@2 - [126] return + [127] return to:@return mul16u: scope:[mul16u] from mul16s mulu16_sel - [127] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 ) - [127] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) - [128] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 + [128] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 ) + [128] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) + [129] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@3 - [129] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 ) - [129] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@3/(dword) mul16u::res#6 ) - [129] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 ) - [130] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 + [130] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 ) + [130] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@3/(dword) mul16u::res#6 ) + [130] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 ) + [131] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 to:mul16u::@return mul16u::@return: scope:[mul16u] from mul16u::@1 - [131] return + [132] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [132] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [133] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@3 + [133] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [134] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@3 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 - [134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [135] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@3 mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4 - [135] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) - [136] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [137] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [136] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) + [137] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [138] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:mul16u::@1 sin16s: scope:[sin16s] from sin16s_gen2::@1 - [138] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 + [139] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 to:sin16s::@4 sin16s::@4: scope:[sin16s] from sin16s - [139] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 + [140] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 to:sin16s::@1 sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 - [140] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [140] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) - [141] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 + [141] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [141] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) + [142] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 to:sin16s::@5 sin16s::@5: scope:[sin16s] from sin16s::@1 - [142] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 + [143] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 to:sin16s::@2 sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5 - [143] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) - [144] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 - [145] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 - [146] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 - [147] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 - [148] call mulu16_sel - [149] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + [144] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) + [145] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 + [146] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 + [147] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 + [148] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 + [149] call mulu16_sel + [150] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 to:sin16s::@7 sin16s::@7: scope:[sin16s] from sin16s::@2 - [150] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 - [151] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - [152] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 - [153] call mulu16_sel - [154] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 + [151] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 + [152] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + [153] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 + [154] call mulu16_sel + [155] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 to:sin16s::@8 sin16s::@8: scope:[sin16s] from sin16s::@7 - [155] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - [156] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - [157] call mulu16_sel - [158] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + [156] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + [157] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + [158] call mulu16_sel + [159] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 to:sin16s::@9 sin16s::@9: scope:[sin16s] from sin16s::@8 - [159] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - [160] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 - [161] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - [162] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 - [163] call mulu16_sel - [164] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 + [160] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + [161] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 + [162] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + [163] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 + [164] call mulu16_sel + [165] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 to:sin16s::@10 sin16s::@10: scope:[sin16s] from sin16s::@9 - [165] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - [166] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - [167] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 - [168] call mulu16_sel - [169] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + [166] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + [167] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + [168] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 + [169] call mulu16_sel + [170] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 to:sin16s::@11 sin16s::@11: scope:[sin16s] from sin16s::@10 - [170] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - [171] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [172] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 - [173] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@12 + [171] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + [172] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [173] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 + [174] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@12 to:sin16s::@6 sin16s::@6: scope:[sin16s] from sin16s::@11 - [174] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 + [175] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 to:sin16s::@3 sin16s::@3: scope:[sin16s] from sin16s::@12 sin16s::@6 - [175] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) + [176] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) to:sin16s::@return sin16s::@return: scope:[sin16s] from sin16s::@3 - [176] return + [177] return to:@return sin16s::@12: scope:[sin16s] from sin16s::@11 - [177] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + [178] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 to:sin16s::@3 mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@2 sin16s::@7 sin16s::@8 sin16s::@9 - [178] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [178] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(dword/signed dword) $10000/(byte/signed byte/word/signed word/dword/signed dword) 6 ) - [178] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 ) - [179] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 - [180] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - [181] call mul16u - [182] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + [179] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [179] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(dword/signed dword) $10000/(byte/signed byte/word/signed word/dword/signed dword) 6 ) + [179] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 ) + [180] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 + [181] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + [182] call mul16u + [183] (dword) mul16u::return#3 ← (dword) mul16u::res#2 to:mulu16_sel::@1 mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel - [183] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - [184] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 - [185] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 + [184] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + [185] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 + [186] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 to:mulu16_sel::@return mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@1 - [186] return + [187] return to:@return div32u16u: scope:[div32u16u] from sin16s_gen2 - [187] phi() - [188] call divr16u - [189] (word) divr16u::return#2 ← (word) divr16u::return#0 + [188] phi() + [189] call divr16u + [190] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div32u16u::@1 div32u16u::@1: scope:[div32u16u] from div32u16u - [190] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 - [191] (word) divr16u::rem#4 ← (word) rem16u#1 - [192] call divr16u - [193] (word) divr16u::return#3 ← (word) divr16u::return#0 + [191] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 + [192] (word) divr16u::rem#4 ← (word) rem16u#1 + [193] call divr16u + [194] (word) divr16u::return#3 ← (word) divr16u::return#0 to:div32u16u::@2 div32u16u::@2: scope:[div32u16u] from div32u16u::@1 - [194] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - [195] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 + [195] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + [196] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 to:div32u16u::@return div32u16u::@return: scope:[div32u16u] from div32u16u::@2 - [196] return + [197] return to:@return divr16u: scope:[divr16u] from div32u16u div32u16u::@1 - [197] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 ) - [197] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@1/(word) divr16u::rem#4 ) + [198] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 ) + [198] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@1/(word) divr16u::rem#4 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [198] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) - [198] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) - [198] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [198] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) - [199] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [200] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [201] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 - [202] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 + [199] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) + [199] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) + [199] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [199] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) + [200] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [201] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [202] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 + [203] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [203] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 + [204] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [204] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [205] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [206] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [207] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 + [205] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [206] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [207] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [208] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [208] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [209] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 + [209] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [210] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [210] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [210] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [211] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [212] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 + [211] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [211] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [212] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [213] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [213] (word) rem16u#1 ← (word) divr16u::rem#11 + [214] (word) rem16u#1 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [214] return + [215] return to:@return fill: scope:[fill] from main::@3 main::@4 - [215] (byte) fill::val#3 ← phi( main::@3/(const byte) BLACK#0 main::@4/(const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 ) - [215] (byte*) fill::addr#0 ← phi( main::@3/(const byte*) SCREEN#0 main::@4/(const byte*) COLS#0 ) - [216] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) $3e8 + [216] (byte) fill::val#3 ← phi( main::@3/(const byte) BLACK#0 main::@4/(const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 ) + [216] (byte*) fill::addr#0 ← phi( main::@3/(const byte*) SCREEN#0 main::@4/(const byte*) COLS#0 ) + [217] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) $3e8 to:fill::@1 fill::@1: scope:[fill] from fill fill::@1 - [217] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) - [218] *((byte*) fill::addr#2) ← (byte) fill::val#3 - [219] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 - [220] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 + [218] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) + [219] *((byte*) fill::addr#2) ← (byte) fill::val#3 + [220] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 + [221] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 to:fill::@return fill::@return: scope:[fill] from fill::@1 - [221] return + [222] return to:@return diff --git a/src/test/ref/examples/scrolllogo/scrolllogo.log b/src/test/ref/examples/scrolllogo/scrolllogo.log index 8fc551a94..78d21e5e3 100644 --- a/src/test/ref/examples/scrolllogo/scrolllogo.log +++ b/src/test/ref/examples/scrolllogo/scrolllogo.log @@ -1,3 +1,6 @@ +Fixing pointer increment (signed word*) sin16s_gen::sintab ← ++ (signed word*) sin16s_gen::sintab +Fixing pointer increment (signed word*) sin16s_gen2::sintab ← ++ (signed word*) sin16s_gen2::sintab +Fixing pointer addition (signed word*~) loop::$1 ← (signed word[XSIN_SIZE]) xsin + (word) xsin_idx Identified constant variable (byte*) SCREEN Identified constant variable (byte*) LOGO Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx @@ -324,13 +327,12 @@ sin16s_gen2::@5: scope:[sin16s_gen2] from sin16s_gen2::@4 (signed word~) sin16s_gen2::$7 ← ((signed word)) (word~) sin16s_gen2::$6 (signed word~) sin16s_gen2::$8 ← (signed word) sin16s_gen2::offs#1 + (signed word~) sin16s_gen2::$7 *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 - (signed word*~) sin16s_gen2::$9 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - (signed word*) sin16s_gen2::sintab#0 ← (signed word*~) sin16s_gen2::$9 - (dword~) sin16s_gen2::$10 ← (dword) sin16s_gen2::x#3 + (dword) sin16s_gen2::step#1 - (dword) sin16s_gen2::x#1 ← (dword~) sin16s_gen2::$10 + (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD + (dword~) sin16s_gen2::$9 ← (dword) sin16s_gen2::x#3 + (dword) sin16s_gen2::step#1 + (dword) sin16s_gen2::x#1 ← (dword~) sin16s_gen2::$9 (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 - (bool~) sin16s_gen2::$11 ← (word) sin16s_gen2::i#1 < (word) sin16s_gen2::wavelength#2 - if((bool~) sin16s_gen2::$11) goto sin16s_gen2::@1 + (bool~) sin16s_gen2::$10 ← (word) sin16s_gen2::i#1 < (word) sin16s_gen2::wavelength#2 + if((bool~) sin16s_gen2::$10) goto sin16s_gen2::@1 to:sin16s_gen2::@return sin16s_gen2::@return: scope:[sin16s_gen2] from sin16s_gen2::@5 (word) rem16u#16 ← phi( sin16s_gen2::@5/(word) rem16u#22 ) @@ -637,18 +639,18 @@ loop::@5: scope:[loop] from loop::@4 loop::@6: scope:[loop] from loop::@4 (word) xsin_idx#9 ← phi( loop::@4/(word) xsin_idx#14 ) *((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0) - (signed word*~) loop::$1 ← (signed word[XSIN_SIZE#0]) xsin#0 + (word) xsin_idx#9 + (word) loop::$5 ← (word) xsin_idx#9 * (const byte) SIZEOF_SIGNED_WORD + (signed word*~) loop::$1 ← (signed word[XSIN_SIZE#0]) xsin#0 + (word) loop::$5 (signed word) loop::xpos#0 ← *((signed word*~) loop::$1) (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 call render_logo to:loop::@15 loop::@15: scope:[loop] from loop::@6 (word) xsin_idx#10 ← phi( loop::@6/(word) xsin_idx#9 ) - (word) xsin_idx#3 ← (word) xsin_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 - (word/signed dword/dword~) loop::$3 ← (word) XSIN_SIZE#0 * (byte/signed byte/word/signed word/dword/signed dword) 2 - (bool~) loop::$4 ← (word) xsin_idx#3 == (word/signed dword/dword~) loop::$3 - (bool~) loop::$5 ← ! (bool~) loop::$4 - if((bool~) loop::$5) goto loop::@11 + (word) xsin_idx#3 ← ++ (word) xsin_idx#10 + (bool~) loop::$3 ← (word) xsin_idx#3 == (word) XSIN_SIZE#0 + (bool~) loop::$4 ← ! (bool~) loop::$3 + if((bool~) loop::$4) goto loop::@11 to:loop::@10 loop::@11: scope:[loop] from loop::@10 loop::@15 (word) xsin_idx#19 ← phi( loop::@10/(word) xsin_idx#4 loop::@15/(word) xsin_idx#3 ) @@ -861,6 +863,7 @@ SYMBOL TABLE SSA (byte*) RASTER#0 (byte*) SCREEN (byte*) SCREEN#0 +(const byte) SIZEOF_SIGNED_WORD = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) VIC_MCM (byte) VIC_MCM#0 (byte) WHITE @@ -1002,9 +1005,9 @@ SYMBOL TABLE SSA (void()) loop() (bool~) loop::$0 (signed word*~) loop::$1 -(word/signed dword/dword~) loop::$3 +(bool~) loop::$3 (bool~) loop::$4 -(bool~) loop::$5 +(word) loop::$5 (label) loop::@1 (label) loop::@10 (label) loop::@11 @@ -1454,8 +1457,7 @@ SYMBOL TABLE SSA (void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max) (signed word~) sin16s_gen2::$0 (signed word~) sin16s_gen2::$1 -(dword~) sin16s_gen2::$10 -(bool~) sin16s_gen2::$11 +(bool~) sin16s_gen2::$10 (signed word~) sin16s_gen2::$2 (dword~) sin16s_gen2::$3 (signed word~) sin16s_gen2::$4 @@ -1463,7 +1465,7 @@ SYMBOL TABLE SSA (word~) sin16s_gen2::$6 (signed word~) sin16s_gen2::$7 (signed word~) sin16s_gen2::$8 -(signed word*~) sin16s_gen2::$9 +(dword~) sin16s_gen2::$9 (label) sin16s_gen2::@1 (label) sin16s_gen2::@3 (label) sin16s_gen2::@4 @@ -1557,10 +1559,10 @@ Inversing boolean not [30] (bool~) divr16u::$9 ← (word) divr16u::rem#6 < (word Inversing boolean not [86] (bool~) mul16u::$3 ← (byte/word~) mul16u::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [85] (bool~) mul16u::$2 ← (byte/word~) mul16u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not [112] (bool~) mul16s::$4 ← (signed word) mul16s::a#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [111] (bool~) mul16s::$3 ← (signed word) mul16s::a#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not [116] (bool~) mul16s::$6 ← (signed word) mul16s::b#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [115] (bool~) mul16s::$5 ← (signed word) mul16s::b#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [185] (bool~) sin16s::$1 ← (dword) sin16s::x#3 < (dword) PI_u4f28#0 from [184] (bool~) sin16s::$0 ← (dword) sin16s::x#3 >= (dword) PI_u4f28#0 -Inversing boolean not [189] (bool~) sin16s::$3 ← (dword) sin16s::x#4 < (dword) PI_HALF_u4f28#0 from [188] (bool~) sin16s::$2 ← (dword) sin16s::x#4 >= (dword) PI_HALF_u4f28#0 -Inversing boolean not [249] (bool~) sin16s::$17 ← (byte) sin16s::isUpper#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [248] (bool~) sin16s::$16 ← (byte) sin16s::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [372] (bool~) loop::$5 ← (word) xsin_idx#3 != (word/signed dword/dword~) loop::$3 from [371] (bool~) loop::$4 ← (word) xsin_idx#3 == (word/signed dword/dword~) loop::$3 +Inversing boolean not [184] (bool~) sin16s::$1 ← (dword) sin16s::x#3 < (dword) PI_u4f28#0 from [183] (bool~) sin16s::$0 ← (dword) sin16s::x#3 >= (dword) PI_u4f28#0 +Inversing boolean not [188] (bool~) sin16s::$3 ← (dword) sin16s::x#4 < (dword) PI_HALF_u4f28#0 from [187] (bool~) sin16s::$2 ← (dword) sin16s::x#4 >= (dword) PI_HALF_u4f28#0 +Inversing boolean not [248] (bool~) sin16s::$17 ← (byte) sin16s::isUpper#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [247] (bool~) sin16s::$16 ← (byte) sin16s::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [371] (bool~) loop::$4 ← (word) xsin_idx#3 != (word) XSIN_SIZE#0 from [370] (bool~) loop::$3 ← (word) xsin_idx#3 == (word) XSIN_SIZE#0 Successful SSA optimization Pass2UnaryNotSimplification Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#7 Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#8 @@ -1624,8 +1626,7 @@ Alias (word) sin16s_gen2::wavelength#2 = (word) sin16s_gen2::wavelength#3 (word) Alias (word) rem16u#16 = (word) rem16u#26 (word) rem16u#29 (word) rem16u#22 (word) rem16u#7 Alias (signed word) mul16s::a#0 = (signed word~) sin16s_gen2::$4 Alias (signed dword) mul16s::return#2 = (signed dword) mul16s::return#4 -Alias (signed word*) sin16s_gen2::sintab#0 = (signed word*~) sin16s_gen2::$9 -Alias (dword) sin16s_gen2::x#1 = (dword~) sin16s_gen2::$10 +Alias (dword) sin16s_gen2::x#1 = (dword~) sin16s_gen2::$9 Alias (dword) sin16s::x#3 = (dword) sin16s::x#5 Alias (dword) sin16s::x#1 = (dword~) sin16s::$18 Alias (word) sin16s::x1#0 = (word~) sin16s::$5 (word) sin16s::x1#1 (word) sin16s::x1#4 (word) sin16s::x1#2 (word) sin16s::x1#3 @@ -1767,23 +1768,23 @@ Simple Condition (bool~) mul16u::$0 [82] if((word) mul16u::a#3!=(byte/signed byt Simple Condition (bool~) mul16u::$3 [87] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 Simple Condition (bool~) mul16s::$4 [113] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 Simple Condition (bool~) mul16s::$6 [117] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 -Simple Condition (bool~) sin16s_gen2::$11 [178] if((word) sin16s_gen2::i#1<(word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@1 -Simple Condition (bool~) sin16s::$1 [186] if((dword) sin16s::x#0<(dword) PI_u4f28#0) goto sin16s::@1 -Simple Condition (bool~) sin16s::$3 [190] if((dword) sin16s::x#4<(dword) PI_HALF_u4f28#0) goto sin16s::@2 -Simple Condition (bool~) sin16s::$17 [250] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@3 -Simple Condition (bool~) fill::$1 [284] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -Simple Condition (bool~) main::$7 [335] if((byte) main::ch#1!=rangelast(0,$ef)) goto main::@1 -Simple Condition (bool~) loop::$0 [360] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto loop::@5 -Simple Condition (bool~) loop::$5 [373] if((word) xsin_idx#3!=(word/signed dword/dword~) loop::$3) goto loop::@11 -Simple Condition (bool~) render_logo::$5 [392] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 -Simple Condition (bool~) render_logo::$7 [404] if((byte) render_logo::screen_idx#18!=(byte) render_logo::logo_start#1) goto render_logo::@5 -Simple Condition (bool~) render_logo::$10 [415] unroll if((byte) render_logo::line#2!=rangelast(0,5)) goto render_logo::@7 -Simple Condition (bool~) render_logo::$11 [420] if((byte) render_logo::screen_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@13 -Simple Condition (bool~) render_logo::$16 [431] unroll if((byte) render_logo::line#4!=rangelast(0,5)) goto render_logo::@15 -Simple Condition (bool~) render_logo::$19 [437] if((byte) render_logo::logo_idx#11!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@22 -Simple Condition (bool~) render_logo::$24 [448] unroll if((byte) render_logo::line#6!=rangelast(0,5)) goto render_logo::@24 -Simple Condition (bool~) render_logo::$25 [454] if((byte) render_logo::screen_idx#15!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@30 -Simple Condition (bool~) render_logo::$28 [463] unroll if((byte) render_logo::line#8!=rangelast(0,5)) goto render_logo::@32 +Simple Condition (bool~) sin16s_gen2::$10 [177] if((word) sin16s_gen2::i#1<(word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@1 +Simple Condition (bool~) sin16s::$1 [185] if((dword) sin16s::x#0<(dword) PI_u4f28#0) goto sin16s::@1 +Simple Condition (bool~) sin16s::$3 [189] if((dword) sin16s::x#4<(dword) PI_HALF_u4f28#0) goto sin16s::@2 +Simple Condition (bool~) sin16s::$17 [249] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@3 +Simple Condition (bool~) fill::$1 [283] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 +Simple Condition (bool~) main::$7 [334] if((byte) main::ch#1!=rangelast(0,$ef)) goto main::@1 +Simple Condition (bool~) loop::$0 [359] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto loop::@5 +Simple Condition (bool~) loop::$4 [372] if((word) xsin_idx#3!=(word) XSIN_SIZE#0) goto loop::@11 +Simple Condition (bool~) render_logo::$5 [391] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 +Simple Condition (bool~) render_logo::$7 [403] if((byte) render_logo::screen_idx#18!=(byte) render_logo::logo_start#1) goto render_logo::@5 +Simple Condition (bool~) render_logo::$10 [414] unroll if((byte) render_logo::line#2!=rangelast(0,5)) goto render_logo::@7 +Simple Condition (bool~) render_logo::$11 [419] if((byte) render_logo::screen_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@13 +Simple Condition (bool~) render_logo::$16 [430] unroll if((byte) render_logo::line#4!=rangelast(0,5)) goto render_logo::@15 +Simple Condition (bool~) render_logo::$19 [436] if((byte) render_logo::logo_idx#11!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@22 +Simple Condition (bool~) render_logo::$24 [447] unroll if((byte) render_logo::line#6!=rangelast(0,5)) goto render_logo::@24 +Simple Condition (bool~) render_logo::$25 [453] if((byte) render_logo::screen_idx#15!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@30 +Simple Condition (bool~) render_logo::$28 [462] unroll if((byte) render_logo::line#8!=rangelast(0,5)) goto render_logo::@32 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) RASTER#0 = ((byte*))$d012 Constant (const byte*) BORDERCOL#0 = ((byte*))$d020 @@ -1848,7 +1849,6 @@ Constant (const byte) fill::val#0 = BLACK#0 Constant (const byte) fill::val#1 = WHITE#0|8 Constant (const byte*) fill::start#1 = COLS#0 Constant (const word) sin16s_gen2::wavelength#0 = XSIN_SIZE#0 -Constant (const word/signed dword/dword) loop::$3 = XSIN_SIZE#0*2 Successful SSA optimization Pass2ConstantIdentification Constant (const word) divr16u::dividend#1 = >div32u16u::dividend#0 Constant (const word) divr16u::dividend#2 = > (byte/signed byte/word/signed word/dword/signed dword) 3 +Inferred type updated to signed word in [155] (signed word/signed dword~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 Unrolling loop Loop head: render_logo::@7 tails: render_logo::@7 blocks: render_logo::@7 Successful SSA optimization Pass2LoopUnroll Redundant Phi (byte) render_logo::line#9 (const byte) render_logo::line#1 @@ -1946,7 +1947,7 @@ Constant (const byte) render_logo::line#2 = ++render_logo::line#1 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$9 = SCREEN#0+render_logo::$8 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [161] if((const byte) render_logo::line#2!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@7_1 +if() condition always true - replacing block destination [162] if((const byte) render_logo::line#2!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@7_1 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: render_logo::@15 tails: render_logo::@15 blocks: render_logo::@15 Successful SSA optimization Pass2LoopUnroll @@ -1959,9 +1960,9 @@ Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$13 = SCREEN#0+render_logo::$12 Successful SSA optimization Pass2ConstantIdentification Removed zero-constant in assignment render_logo::$15 -if() condition always true - replacing block destination [43] if((const byte) render_logo::line#4!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@15_1 +if() condition always true - replacing block destination [44] if((const byte) render_logo::line#4!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@15_1 Successful SSA optimization Pass2ConstantIfs -Inferred type updated to byte in [41] (byte/signed word/word/dword/signed dword~) render_logo::$15 ← (byte) render_logo::logo_idx#10 +Inferred type updated to byte in [42] (byte/signed word/word/dword/signed dword~) render_logo::$15 ← (byte) render_logo::logo_idx#10 Successful SSA optimization PassNEliminateUnusedVars Alias (byte) render_logo::logo_idx#10 = (byte~) render_logo::$15 Successful SSA optimization Pass2AliasElimination @@ -1975,7 +1976,7 @@ Constant (const byte) render_logo::line#16 = ++render_logo::line#4 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$32 = SCREEN#0+render_logo::$31 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [44] if((const byte) render_logo::line#16!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@15_2 +if() condition always true - replacing block destination [45] if((const byte) render_logo::line#16!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@15_2 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: render_logo::@15_2 tails: render_logo::@15_2 blocks: render_logo::@15_2 Successful SSA optimization Pass2LoopUnroll @@ -1987,7 +1988,7 @@ Constant (const byte) render_logo::line#18 = ++render_logo::line#16 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$36 = SCREEN#0+render_logo::$35 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [46] if((const byte) render_logo::line#18!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@15_3 +if() condition always true - replacing block destination [47] if((const byte) render_logo::line#18!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@15_3 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: render_logo::@15_3 tails: render_logo::@15_3 blocks: render_logo::@15_3 Successful SSA optimization Pass2LoopUnroll @@ -1999,7 +2000,7 @@ Constant (const byte) render_logo::line#20 = ++render_logo::line#18 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$40 = SCREEN#0+render_logo::$39 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [48] if((const byte) render_logo::line#20!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@15_4 +if() condition always true - replacing block destination [49] if((const byte) render_logo::line#20!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@15_4 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: render_logo::@15_4 tails: render_logo::@15_4 blocks: render_logo::@15_4 Successful SSA optimization Pass2LoopUnroll @@ -2011,7 +2012,7 @@ Constant (const byte) render_logo::line#22 = ++render_logo::line#20 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$44 = SCREEN#0+render_logo::$43 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [50] if((const byte) render_logo::line#22!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@15_5 +if() condition always true - replacing block destination [51] if((const byte) render_logo::line#22!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@15_5 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: render_logo::@15_5 tails: render_logo::@15_5 blocks: render_logo::@15_5 Successful SSA optimization Pass2LoopUnroll @@ -2024,7 +2025,7 @@ Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$48 = SCREEN#0+render_logo::$47 Successful SSA optimization Pass2ConstantIdentification Removing PHI-reference to removed block (render_logo::@15_5) in block render_logo::@15_6 -if() condition always false - eliminating [52] if((const byte) render_logo::line#24!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@15_6 +if() condition always false - eliminating [53] if((const byte) render_logo::line#24!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@15_6 Successful SSA optimization Pass2ConstantIfs Successful SSA optimization PassNEliminateUnusedVars Eliminating variable (byte) render_logo::line#25 from unused block render_logo::@15_6 @@ -2044,7 +2045,7 @@ Constant (const byte) render_logo::line#14 = ++render_logo::line#2 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$30 = SCREEN#0+render_logo::$29 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [56] if((const byte) render_logo::line#14!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@7_2 +if() condition always true - replacing block destination [57] if((const byte) render_logo::line#14!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@7_2 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: render_logo::@7_2 tails: render_logo::@7_2 blocks: render_logo::@7_2 Successful SSA optimization Pass2LoopUnroll @@ -2055,7 +2056,7 @@ Constant (const byte) render_logo::line#28 = ++render_logo::line#14 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$56 = SCREEN#0+render_logo::$55 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [57] if((const byte) render_logo::line#28!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@7_3 +if() condition always true - replacing block destination [58] if((const byte) render_logo::line#28!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@7_3 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: render_logo::@7_3 tails: render_logo::@7_3 blocks: render_logo::@7_3 Successful SSA optimization Pass2LoopUnroll @@ -2066,7 +2067,7 @@ Constant (const byte) render_logo::line#30 = ++render_logo::line#28 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$58 = SCREEN#0+render_logo::$57 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [58] if((const byte) render_logo::line#30!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@7_4 +if() condition always true - replacing block destination [59] if((const byte) render_logo::line#30!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@7_4 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: render_logo::@7_4 tails: render_logo::@7_4 blocks: render_logo::@7_4 Successful SSA optimization Pass2LoopUnroll @@ -2077,7 +2078,7 @@ Constant (const byte) render_logo::line#32 = ++render_logo::line#30 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$60 = SCREEN#0+render_logo::$59 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [59] if((const byte) render_logo::line#32!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@7_5 +if() condition always true - replacing block destination [60] if((const byte) render_logo::line#32!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@7_5 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: render_logo::@7_5 tails: render_logo::@7_5 blocks: render_logo::@7_5 Successful SSA optimization Pass2LoopUnroll @@ -2089,7 +2090,7 @@ Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$62 = SCREEN#0+render_logo::$61 Successful SSA optimization Pass2ConstantIdentification Removing PHI-reference to removed block (render_logo::@7_5) in block render_logo::@7_6 -if() condition always false - eliminating [60] if((const byte) render_logo::line#34!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@7_6 +if() condition always false - eliminating [61] if((const byte) render_logo::line#34!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@7_6 Successful SSA optimization Pass2ConstantIfs Successful SSA optimization PassNEliminateUnusedVars Eliminating variable (byte) render_logo::line#35 from unused block render_logo::@7_6 @@ -2107,7 +2108,7 @@ Constant (const byte) render_logo::line#8 = ++render_logo::line#7 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$27 = SCREEN#0+render_logo::$26 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [67] if((const byte) render_logo::line#8!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@32_1 +if() condition always true - replacing block destination [68] if((const byte) render_logo::line#8!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@32_1 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: render_logo::@32_1 tails: render_logo::@32_1 blocks: render_logo::@32_1 Successful SSA optimization Pass2LoopUnroll @@ -2118,7 +2119,7 @@ Constant (const byte) render_logo::line#38 = ++render_logo::line#8 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$66 = SCREEN#0+render_logo::$65 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [68] if((const byte) render_logo::line#38!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@32_2 +if() condition always true - replacing block destination [69] if((const byte) render_logo::line#38!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@32_2 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: render_logo::@32_2 tails: render_logo::@32_2 blocks: render_logo::@32_2 Successful SSA optimization Pass2LoopUnroll @@ -2129,7 +2130,7 @@ Constant (const byte) render_logo::line#40 = ++render_logo::line#38 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$68 = SCREEN#0+render_logo::$67 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [69] if((const byte) render_logo::line#40!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@32_3 +if() condition always true - replacing block destination [70] if((const byte) render_logo::line#40!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@32_3 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: render_logo::@32_3 tails: render_logo::@32_3 blocks: render_logo::@32_3 Successful SSA optimization Pass2LoopUnroll @@ -2140,7 +2141,7 @@ Constant (const byte) render_logo::line#42 = ++render_logo::line#40 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$70 = SCREEN#0+render_logo::$69 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [70] if((const byte) render_logo::line#42!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@32_4 +if() condition always true - replacing block destination [71] if((const byte) render_logo::line#42!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@32_4 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: render_logo::@32_4 tails: render_logo::@32_4 blocks: render_logo::@32_4 Successful SSA optimization Pass2LoopUnroll @@ -2151,7 +2152,7 @@ Constant (const byte) render_logo::line#44 = ++render_logo::line#42 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$72 = SCREEN#0+render_logo::$71 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [71] if((const byte) render_logo::line#44!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@32_5 +if() condition always true - replacing block destination [72] if((const byte) render_logo::line#44!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@32_5 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: render_logo::@32_5 tails: render_logo::@32_5 blocks: render_logo::@32_5 Successful SSA optimization Pass2LoopUnroll @@ -2163,7 +2164,7 @@ Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$74 = SCREEN#0+render_logo::$73 Successful SSA optimization Pass2ConstantIdentification Removing PHI-reference to removed block (render_logo::@32_5) in block render_logo::@32_6 -if() condition always false - eliminating [72] if((const byte) render_logo::line#46!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@32_6 +if() condition always false - eliminating [73] if((const byte) render_logo::line#46!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@32_6 Successful SSA optimization Pass2ConstantIfs Successful SSA optimization PassNEliminateUnusedVars Eliminating variable (byte) render_logo::line#47 from unused block render_logo::@32_6 @@ -2183,9 +2184,9 @@ Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$21 = SCREEN#0+render_logo::$20 Successful SSA optimization Pass2ConstantIdentification Removed zero-constant in assignment render_logo::$23 -if() condition always true - replacing block destination [75] if((const byte) render_logo::line#6!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@24_1 +if() condition always true - replacing block destination [76] if((const byte) render_logo::line#6!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@24_1 Successful SSA optimization Pass2ConstantIfs -Inferred type updated to byte in [73] (byte/signed word/word/dword/signed dword~) render_logo::$23 ← (byte) render_logo::logo_idx#11 +Inferred type updated to byte in [74] (byte/signed word/word/dword/signed dword~) render_logo::$23 ← (byte) render_logo::logo_idx#11 Successful SSA optimization PassNEliminateUnusedVars Alias (byte) render_logo::logo_idx#11 = (byte~) render_logo::$23 Successful SSA optimization Pass2AliasElimination @@ -2199,7 +2200,7 @@ Constant (const byte) render_logo::line#50 = ++render_logo::line#6 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$78 = SCREEN#0+render_logo::$77 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [76] if((const byte) render_logo::line#50!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@24_2 +if() condition always true - replacing block destination [77] if((const byte) render_logo::line#50!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@24_2 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: render_logo::@24_2 tails: render_logo::@24_2 blocks: render_logo::@24_2 Successful SSA optimization Pass2LoopUnroll @@ -2211,7 +2212,7 @@ Constant (const byte) render_logo::line#52 = ++render_logo::line#50 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$82 = SCREEN#0+render_logo::$81 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [78] if((const byte) render_logo::line#52!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@24_3 +if() condition always true - replacing block destination [79] if((const byte) render_logo::line#52!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@24_3 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: render_logo::@24_3 tails: render_logo::@24_3 blocks: render_logo::@24_3 Successful SSA optimization Pass2LoopUnroll @@ -2223,7 +2224,7 @@ Constant (const byte) render_logo::line#54 = ++render_logo::line#52 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$86 = SCREEN#0+render_logo::$85 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [80] if((const byte) render_logo::line#54!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@24_4 +if() condition always true - replacing block destination [81] if((const byte) render_logo::line#54!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@24_4 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: render_logo::@24_4 tails: render_logo::@24_4 blocks: render_logo::@24_4 Successful SSA optimization Pass2LoopUnroll @@ -2235,7 +2236,7 @@ Constant (const byte) render_logo::line#56 = ++render_logo::line#54 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$90 = SCREEN#0+render_logo::$89 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [82] if((const byte) render_logo::line#56!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@24_5 +if() condition always true - replacing block destination [83] if((const byte) render_logo::line#56!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@24_5 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: render_logo::@24_5 tails: render_logo::@24_5 blocks: render_logo::@24_5 Successful SSA optimization Pass2LoopUnroll @@ -2248,7 +2249,7 @@ Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$94 = SCREEN#0+render_logo::$93 Successful SSA optimization Pass2ConstantIdentification Removing PHI-reference to removed block (render_logo::@24_5) in block render_logo::@24_6 -if() condition always false - eliminating [84] if((const byte) render_logo::line#58!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@24_6 +if() condition always false - eliminating [85] if((const byte) render_logo::line#58!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@24_6 Successful SSA optimization Pass2ConstantIfs Successful SSA optimization PassNEliminateUnusedVars Eliminating variable (byte) render_logo::line#59 from unused block render_logo::@24_6 @@ -2438,7 +2439,6 @@ Constant inlined render_logo::$20 = (byte/signed byte/word/signed word/dword/sig Constant inlined render_logo::line#44 = ++++++++++(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_logo::line#40 = ++++++(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined main::toD0181_$6#0 = >((word))(const byte*) LOGO#0/(byte/signed byte/word/signed word/dword/signed dword) 4 -Constant inlined loop::$3 = (const word) XSIN_SIZE#0*(byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined main::toD0181_$2#0 = ((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) $3fff*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined div32u16u::divisor#0 = (const word) XSIN_SIZE#0 Constant inlined render_logo::$27 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 0 @@ -2535,68 +2535,68 @@ Adding NOP phi() at start of div32u16u CALL GRAPH Calls in [] to main:3 Calls in [main] to fill:13 fill:15 sin16s_gen2:21 loop:23 -Calls in [loop] to render_logo:33 -Calls in [sin16s_gen2] to div32u16u:108 sin16s:113 mul16s:116 -Calls in [mul16s] to mul16u:131 -Calls in [sin16s] to mulu16_sel:175 mulu16_sel:182 mulu16_sel:187 mulu16_sel:195 mulu16_sel:202 -Calls in [mulu16_sel] to mul16u:220 -Calls in [div32u16u] to divr16u:227 divr16u:232 +Calls in [loop] to render_logo:34 +Calls in [sin16s_gen2] to div32u16u:109 sin16s:114 mul16s:117 +Calls in [mul16s] to mul16u:132 +Calls in [sin16s] to mulu16_sel:176 mulu16_sel:183 mulu16_sel:188 mulu16_sel:196 mulu16_sel:203 +Calls in [mulu16_sel] to mul16u:221 +Calls in [div32u16u] to divr16u:228 divr16u:233 Created 38 initial phi equivalence classes Coalesced [25] main::ch#3 ← main::ch#1 -Coalesced [39] xsin_idx#29 ← xsin_idx#19 -Coalesced [40] xsin_idx#30 ← xsin_idx#3 -Coalesced [50] render_logo::screen_idx#26 ← render_logo::screen_idx#18 -Coalesced [67] render_logo::screen_idx#25 ← render_logo::screen_idx#4 -Coalesced [68] render_logo::logo_idx#13 ← render_logo::logo_idx#3 -Coalesced [76] render_logo::screen_idx#24 ← render_logo::screen_idx#3 -Coalesced [81] render_logo::screen_idx#28 ← render_logo::screen_idx#21 -Coalesced [91] render_logo::screen_idx#29 ← render_logo::screen_idx#6 -Coalesced [105] render_logo::logo_idx#15 ← render_logo::logo_idx#4 -Coalesced [106] render_logo::screen_idx#27 ← render_logo::screen_idx#5 -Coalesced [127] sin16s_gen2::x#5 ← sin16s_gen2::x#1 -Coalesced [128] sin16s_gen2::sintab#7 ← sin16s_gen2::sintab#0 -Coalesced [129] sin16s_gen2::i#5 ← sin16s_gen2::i#1 -Coalesced [138] mul16s::m#7 ← mul16s::m#1 -Coalesced [142] mul16s::m#8 ← mul16s::m#0 -Coalesced [145] mul16u::a#10 ← mul16u::a#6 -Coalesced [146] mul16u::mb#6 ← mul16u::mb#0 -Coalesced [153] mul16u::res#9 ← mul16u::res#1 -Coalesced [157] mul16u::a#11 ← mul16u::a#0 -Coalesced [158] mul16u::res#7 ← mul16u::res#6 -Coalesced [159] mul16u::mb#7 ← mul16u::mb#1 -Coalesced (already) [160] mul16u::res#8 ← mul16u::res#2 -Coalesced [163] sin16s::x#9 ← sin16s::x#1 -Coalesced [167] sin16s::x#11 ← sin16s::x#2 -Coalesced [173] mulu16_sel::v1#8 ← mulu16_sel::v1#0 -Coalesced [174] mulu16_sel::v2#8 ← mulu16_sel::v2#0 -Coalesced [180] mulu16_sel::v1#9 ← mulu16_sel::v1#1 -Coalesced [181] mulu16_sel::v2#9 ← mulu16_sel::v2#1 -Coalesced [186] mulu16_sel::v1#10 ← mulu16_sel::v1#2 -Coalesced [193] mulu16_sel::v1#6 ← mulu16_sel::v1#3 -Coalesced [194] mulu16_sel::v2#6 ← mulu16_sel::v2#3 -Coalesced [200] mulu16_sel::v1#7 ← mulu16_sel::v1#4 -Coalesced [201] mulu16_sel::v2#7 ← mulu16_sel::v2#4 -Coalesced [209] sin16s::return#6 ← sin16s::sinx#1 -Coalesced [213] sin16s::x#10 ← sin16s::x#4 -Coalesced [214] sin16s::x#8 ← sin16s::x#0 -Coalesced [218] mul16u::b#3 ← mul16u::b#1 -Coalesced [219] mul16u::a#9 ← mul16u::a#2 -Coalesced [231] divr16u::rem#12 ← divr16u::rem#4 -Coalesced [238] divr16u::rem#13 ← divr16u::rem#10 -Coalesced [239] divr16u::dividend#9 ← divr16u::dividend#5 -Coalesced [246] divr16u::rem#16 ← divr16u::rem#1 -Coalesced [253] divr16u::rem#18 ← divr16u::rem#2 -Coalesced [254] divr16u::return#8 ← divr16u::quotient#2 -Coalesced [260] divr16u::rem#14 ← divr16u::rem#11 -Coalesced [261] divr16u::dividend#10 ← divr16u::dividend#0 -Coalesced [262] divr16u::quotient#9 ← divr16u::return#0 -Coalesced [263] divr16u::i#7 ← divr16u::i#1 -Coalesced [264] divr16u::rem#17 ← divr16u::rem#6 -Coalesced [265] divr16u::return#7 ← divr16u::quotient#1 -Coalesced [266] divr16u::rem#15 ← divr16u::rem#0 -Coalesced [269] fill::addr#3 ← fill::addr#0 -Coalesced [275] fill::addr#4 ← fill::addr#1 +Coalesced [40] xsin_idx#29 ← xsin_idx#19 +Coalesced [41] xsin_idx#30 ← xsin_idx#3 +Coalesced [51] render_logo::screen_idx#26 ← render_logo::screen_idx#18 +Coalesced [68] render_logo::screen_idx#25 ← render_logo::screen_idx#4 +Coalesced [69] render_logo::logo_idx#13 ← render_logo::logo_idx#3 +Coalesced [77] render_logo::screen_idx#24 ← render_logo::screen_idx#3 +Coalesced [82] render_logo::screen_idx#28 ← render_logo::screen_idx#21 +Coalesced [92] render_logo::screen_idx#29 ← render_logo::screen_idx#6 +Coalesced [106] render_logo::logo_idx#15 ← render_logo::logo_idx#4 +Coalesced [107] render_logo::screen_idx#27 ← render_logo::screen_idx#5 +Coalesced [128] sin16s_gen2::x#5 ← sin16s_gen2::x#1 +Coalesced [129] sin16s_gen2::sintab#7 ← sin16s_gen2::sintab#0 +Coalesced [130] sin16s_gen2::i#5 ← sin16s_gen2::i#1 +Coalesced [139] mul16s::m#7 ← mul16s::m#1 +Coalesced [143] mul16s::m#8 ← mul16s::m#0 +Coalesced [146] mul16u::a#10 ← mul16u::a#6 +Coalesced [147] mul16u::mb#6 ← mul16u::mb#0 +Coalesced [154] mul16u::res#9 ← mul16u::res#1 +Coalesced [158] mul16u::a#11 ← mul16u::a#0 +Coalesced [159] mul16u::res#7 ← mul16u::res#6 +Coalesced [160] mul16u::mb#7 ← mul16u::mb#1 +Coalesced (already) [161] mul16u::res#8 ← mul16u::res#2 +Coalesced [164] sin16s::x#9 ← sin16s::x#1 +Coalesced [168] sin16s::x#11 ← sin16s::x#2 +Coalesced [174] mulu16_sel::v1#8 ← mulu16_sel::v1#0 +Coalesced [175] mulu16_sel::v2#8 ← mulu16_sel::v2#0 +Coalesced [181] mulu16_sel::v1#9 ← mulu16_sel::v1#1 +Coalesced [182] mulu16_sel::v2#9 ← mulu16_sel::v2#1 +Coalesced [187] mulu16_sel::v1#10 ← mulu16_sel::v1#2 +Coalesced [194] mulu16_sel::v1#6 ← mulu16_sel::v1#3 +Coalesced [195] mulu16_sel::v2#6 ← mulu16_sel::v2#3 +Coalesced [201] mulu16_sel::v1#7 ← mulu16_sel::v1#4 +Coalesced [202] mulu16_sel::v2#7 ← mulu16_sel::v2#4 +Coalesced [210] sin16s::return#6 ← sin16s::sinx#1 +Coalesced [214] sin16s::x#10 ← sin16s::x#4 +Coalesced [215] sin16s::x#8 ← sin16s::x#0 +Coalesced [219] mul16u::b#3 ← mul16u::b#1 +Coalesced [220] mul16u::a#9 ← mul16u::a#2 +Coalesced [232] divr16u::rem#12 ← divr16u::rem#4 +Coalesced [239] divr16u::rem#13 ← divr16u::rem#10 +Coalesced [240] divr16u::dividend#9 ← divr16u::dividend#5 +Coalesced [247] divr16u::rem#16 ← divr16u::rem#1 +Coalesced [254] divr16u::rem#18 ← divr16u::rem#2 +Coalesced [255] divr16u::return#8 ← divr16u::quotient#2 +Coalesced [261] divr16u::rem#14 ← divr16u::rem#11 +Coalesced [262] divr16u::dividend#10 ← divr16u::dividend#0 +Coalesced [263] divr16u::quotient#9 ← divr16u::return#0 +Coalesced [264] divr16u::i#7 ← divr16u::i#1 +Coalesced [265] divr16u::rem#17 ← divr16u::rem#6 +Coalesced [266] divr16u::return#7 ← divr16u::quotient#1 +Coalesced [267] divr16u::rem#15 ← divr16u::rem#0 +Coalesced [270] fill::addr#3 ← fill::addr#0 +Coalesced [276] fill::addr#4 ← fill::addr#1 Coalesced down to 26 phi equivalence classes Culled Empty Block (label) main::@8 Culled Empty Block (label) loop::@10 @@ -2723,391 +2723,392 @@ loop::@2: scope:[loop] from loop::@1 loop::@2 to:loop::@3 loop::@3: scope:[loop] from loop::@2 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) - [29] (signed word*~) loop::$1 ← (const signed word[XSIN_SIZE#0]) xsin#0 + (word) xsin_idx#11 - [30] (signed word) loop::xpos#0 ← *((signed word*~) loop::$1) - [31] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 - [32] call render_logo + [29] (word) loop::$5 ← (word) xsin_idx#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [30] (signed word*~) loop::$1 ← (const signed word[XSIN_SIZE#0]) xsin#0 + (word) loop::$5 + [31] (signed word) loop::xpos#0 ← *((signed word*~) loop::$1) + [32] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 + [33] call render_logo to:loop::@5 loop::@5: scope:[loop] from loop::@3 - [33] (word) xsin_idx#3 ← (word) xsin_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [34] if((word) xsin_idx#3!=(const word) XSIN_SIZE#0*(byte/signed byte/word/signed word/dword/signed dword) 2) goto loop::@6 + [34] (word) xsin_idx#3 ← ++ (word) xsin_idx#11 + [35] if((word) xsin_idx#3!=(const word) XSIN_SIZE#0) goto loop::@6 to:loop::@4 loop::@4: scope:[loop] from loop::@5 loop::@6 - [35] (word) xsin_idx#19 ← phi( loop::@5/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@6/(word) xsin_idx#3 ) - [36] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) + [36] (word) xsin_idx#19 ← phi( loop::@5/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@6/(word) xsin_idx#3 ) + [37] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) to:loop::@1 loop::@6: scope:[loop] from loop::@5 - [37] phi() + [38] phi() to:loop::@4 render_logo: scope:[render_logo] from loop::@3 - [38] (byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos#0 - [39] (byte~) render_logo::$1 ← (byte~) render_logo::$0 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [40] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1 - [41] *((const byte*) D016#0) ← (byte~) render_logo::$2 - [42] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 - [43] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3 - [44] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 + [39] (byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos#0 + [40] (byte~) render_logo::$1 ← (byte~) render_logo::$0 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [41] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1 + [42] *((const byte*) D016#0) ← (byte~) render_logo::$2 + [43] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 + [44] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3 + [45] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 to:render_logo::@2 render_logo::@2: scope:[render_logo] from render_logo render_logo::@4 - [45] (byte) render_logo::screen_idx#18 ← phi( render_logo/(byte/signed byte/word/signed word/dword/signed dword) 0 render_logo::@4/(byte) render_logo::screen_idx#3 ) - [46] if((byte) render_logo::screen_idx#18!=(byte)(signed byte) render_logo::x_char#0) goto render_logo::@3 + [46] (byte) render_logo::screen_idx#18 ← phi( render_logo/(byte/signed byte/word/signed word/dword/signed dword) 0 render_logo::@4/(byte) render_logo::screen_idx#3 ) + [47] if((byte) render_logo::screen_idx#18!=(byte)(signed byte) render_logo::x_char#0) goto render_logo::@3 to:render_logo::@5 render_logo::@5: scope:[render_logo] from render_logo::@2 render_logo::@7 - [47] (byte) render_logo::logo_idx#10 ← phi( render_logo::@7/(byte) render_logo::logo_idx#3 render_logo::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [47] (byte) render_logo::screen_idx#10 ← phi( render_logo::@7/(byte) render_logo::screen_idx#4 render_logo::@2/(byte) render_logo::screen_idx#18 ) - [48] if((byte) render_logo::screen_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@6 + [48] (byte) render_logo::logo_idx#10 ← phi( render_logo::@7/(byte) render_logo::logo_idx#3 render_logo::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [48] (byte) render_logo::screen_idx#10 ← phi( render_logo::@7/(byte) render_logo::screen_idx#4 render_logo::@2/(byte) render_logo::screen_idx#18 ) + [49] if((byte) render_logo::screen_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@6 to:render_logo::@return render_logo::@return: scope:[render_logo] from render_logo::@11 render_logo::@5 - [49] return + [50] return to:@return render_logo::@6: scope:[render_logo] from render_logo::@5 - [50] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#10) ← (byte) render_logo::logo_idx#10 + [51] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#10) ← (byte) render_logo::logo_idx#10 to:render_logo::@15_1 render_logo::@15_1: scope:[render_logo] from render_logo::@6 - [51] (byte/signed word/word/dword/signed dword~) render_logo::$34 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 - [52] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$34 + [52] (byte/signed word/word/dword/signed dword~) render_logo::$34 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$34 to:render_logo::@15_2 render_logo::@15_2: scope:[render_logo] from render_logo::@15_1 - [53] (byte/signed word/word/dword/signed dword~) render_logo::$38 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 - [54] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$38 + [54] (byte/signed word/word/dword/signed dword~) render_logo::$38 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + [55] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$38 to:render_logo::@15_3 render_logo::@15_3: scope:[render_logo] from render_logo::@15_2 - [55] (byte/signed word/word/dword/signed dword~) render_logo::$42 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 - [56] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$42 + [56] (byte/signed word/word/dword/signed dword~) render_logo::$42 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + [57] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$42 to:render_logo::@15_4 render_logo::@15_4: scope:[render_logo] from render_logo::@15_3 - [57] (byte/signed word/word/dword/signed dword~) render_logo::$46 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 - [58] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$46 + [58] (byte/signed word/word/dword/signed dword~) render_logo::$46 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + [59] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$46 to:render_logo::@15_5 render_logo::@15_5: scope:[render_logo] from render_logo::@15_4 - [59] (byte/signed word/word/dword/signed dword~) render_logo::$50 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 - [60] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$50 + [60] (byte/signed word/word/dword/signed dword~) render_logo::$50 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + [61] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$50 to:render_logo::@7 render_logo::@7: scope:[render_logo] from render_logo::@15_5 - [61] (byte) render_logo::screen_idx#4 ← ++ (byte) render_logo::screen_idx#10 - [62] (byte) render_logo::logo_idx#3 ← ++ (byte) render_logo::logo_idx#10 + [62] (byte) render_logo::screen_idx#4 ← ++ (byte) render_logo::screen_idx#10 + [63] (byte) render_logo::logo_idx#3 ← ++ (byte) render_logo::logo_idx#10 to:render_logo::@5 render_logo::@3: scope:[render_logo] from render_logo::@2 - [63] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [64] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@7_1 render_logo::@7_1: scope:[render_logo] from render_logo::@3 - [64] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@7_2 render_logo::@7_2: scope:[render_logo] from render_logo::@7_1 - [65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [66] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@7_3 render_logo::@7_3: scope:[render_logo] from render_logo::@7_2 - [66] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@7_4 render_logo::@7_4: scope:[render_logo] from render_logo::@7_3 - [67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [68] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@7_5 render_logo::@7_5: scope:[render_logo] from render_logo::@7_4 - [68] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [69] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@4 render_logo::@4: scope:[render_logo] from render_logo::@7_5 - [69] (byte) render_logo::screen_idx#3 ← ++ (byte) render_logo::screen_idx#18 + [70] (byte) render_logo::screen_idx#3 ← ++ (byte) render_logo::screen_idx#18 to:render_logo::@2 render_logo::@1: scope:[render_logo] from render_logo - [70] (signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#0 - [71] (byte~) render_logo::logo_idx#14 ← (byte)(signed byte~) render_logo::$17 + [71] (signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#0 + [72] (byte~) render_logo::logo_idx#14 ← (byte)(signed byte~) render_logo::$17 to:render_logo::@8 render_logo::@8: scope:[render_logo] from render_logo::@1 render_logo::@10 - [72] (byte) render_logo::screen_idx#21 ← phi( render_logo::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_logo::@10/(byte) render_logo::screen_idx#5 ) - [72] (byte) render_logo::logo_idx#11 ← phi( render_logo::@1/(byte~) render_logo::logo_idx#14 render_logo::@10/(byte) render_logo::logo_idx#4 ) - [73] if((byte) render_logo::logo_idx#11!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@9 + [73] (byte) render_logo::screen_idx#21 ← phi( render_logo::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_logo::@10/(byte) render_logo::screen_idx#5 ) + [73] (byte) render_logo::logo_idx#11 ← phi( render_logo::@1/(byte~) render_logo::logo_idx#14 render_logo::@10/(byte) render_logo::logo_idx#4 ) + [74] if((byte) render_logo::logo_idx#11!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@9 to:render_logo::@11 render_logo::@11: scope:[render_logo] from render_logo::@13 render_logo::@8 - [74] (byte) render_logo::screen_idx#15 ← phi( render_logo::@8/(byte) render_logo::screen_idx#21 render_logo::@13/(byte) render_logo::screen_idx#6 ) - [75] if((byte) render_logo::screen_idx#15!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@12 + [75] (byte) render_logo::screen_idx#15 ← phi( render_logo::@8/(byte) render_logo::screen_idx#21 render_logo::@13/(byte) render_logo::screen_idx#6 ) + [76] if((byte) render_logo::screen_idx#15!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@12 to:render_logo::@return render_logo::@12: scope:[render_logo] from render_logo::@11 - [76] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [77] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@32_1 render_logo::@32_1: scope:[render_logo] from render_logo::@12 - [77] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@32_2 render_logo::@32_2: scope:[render_logo] from render_logo::@32_1 - [78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [79] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@32_3 render_logo::@32_3: scope:[render_logo] from render_logo::@32_2 - [79] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@32_4 render_logo::@32_4: scope:[render_logo] from render_logo::@32_3 - [80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [81] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@32_5 render_logo::@32_5: scope:[render_logo] from render_logo::@32_4 - [81] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [82] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:render_logo::@13 render_logo::@13: scope:[render_logo] from render_logo::@32_5 - [82] (byte) render_logo::screen_idx#6 ← ++ (byte) render_logo::screen_idx#15 + [83] (byte) render_logo::screen_idx#6 ← ++ (byte) render_logo::screen_idx#15 to:render_logo::@11 render_logo::@9: scope:[render_logo] from render_logo::@8 - [83] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#21) ← (byte) render_logo::logo_idx#11 + [84] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#21) ← (byte) render_logo::logo_idx#11 to:render_logo::@24_1 render_logo::@24_1: scope:[render_logo] from render_logo::@9 - [84] (byte/signed word/word/dword/signed dword~) render_logo::$80 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 - [85] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$80 + [85] (byte/signed word/word/dword/signed dword~) render_logo::$80 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + [86] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$80 to:render_logo::@24_2 render_logo::@24_2: scope:[render_logo] from render_logo::@24_1 - [86] (byte/signed word/word/dword/signed dword~) render_logo::$84 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 - [87] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$84 + [87] (byte/signed word/word/dword/signed dword~) render_logo::$84 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + [88] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$84 to:render_logo::@24_3 render_logo::@24_3: scope:[render_logo] from render_logo::@24_2 - [88] (byte/signed word/word/dword/signed dword~) render_logo::$88 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 - [89] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$88 + [89] (byte/signed word/word/dword/signed dword~) render_logo::$88 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + [90] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$88 to:render_logo::@24_4 render_logo::@24_4: scope:[render_logo] from render_logo::@24_3 - [90] (byte/signed word/word/dword/signed dword~) render_logo::$92 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 - [91] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$92 + [91] (byte/signed word/word/dword/signed dword~) render_logo::$92 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + [92] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$92 to:render_logo::@24_5 render_logo::@24_5: scope:[render_logo] from render_logo::@24_4 - [92] (byte/signed word/word/dword/signed dword~) render_logo::$96 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 - [93] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$96 + [93] (byte/signed word/word/dword/signed dword~) render_logo::$96 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + [94] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$96 to:render_logo::@10 render_logo::@10: scope:[render_logo] from render_logo::@24_5 - [94] (byte) render_logo::screen_idx#5 ← ++ (byte) render_logo::screen_idx#21 - [95] (byte) render_logo::logo_idx#4 ← ++ (byte) render_logo::logo_idx#11 + [95] (byte) render_logo::screen_idx#5 ← ++ (byte) render_logo::screen_idx#21 + [96] (byte) render_logo::logo_idx#4 ← ++ (byte) render_logo::logo_idx#11 to:render_logo::@8 sin16s_gen2: scope:[sin16s_gen2] from main::@2 - [96] phi() - [97] call div32u16u - [98] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + [97] phi() + [98] call div32u16u + [99] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 to:sin16s_gen2::@2 sin16s_gen2::@2: scope:[sin16s_gen2] from sin16s_gen2 - [99] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 + [100] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 to:sin16s_gen2::@1 sin16s_gen2::@1: scope:[sin16s_gen2] from sin16s_gen2::@2 sin16s_gen2::@4 - [100] (word) sin16s_gen2::i#2 ← phi( sin16s_gen2::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen2::@4/(word) sin16s_gen2::i#1 ) - [100] (signed word*) sin16s_gen2::sintab#2 ← phi( sin16s_gen2::@2/(const signed word[XSIN_SIZE#0]) xsin#0 sin16s_gen2::@4/(signed word*) sin16s_gen2::sintab#0 ) - [100] (dword) sin16s_gen2::x#2 ← phi( sin16s_gen2::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen2::@4/(dword) sin16s_gen2::x#1 ) - [101] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 - [102] call sin16s - [103] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + [101] (word) sin16s_gen2::i#2 ← phi( sin16s_gen2::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen2::@4/(word) sin16s_gen2::i#1 ) + [101] (signed word*) sin16s_gen2::sintab#2 ← phi( sin16s_gen2::@2/(const signed word[XSIN_SIZE#0]) xsin#0 sin16s_gen2::@4/(signed word*) sin16s_gen2::sintab#0 ) + [101] (dword) sin16s_gen2::x#2 ← phi( sin16s_gen2::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen2::@4/(dword) sin16s_gen2::x#1 ) + [102] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 + [103] call sin16s + [104] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 to:sin16s_gen2::@3 sin16s_gen2::@3: scope:[sin16s_gen2] from sin16s_gen2::@1 - [104] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 - [105] call mul16s - [106] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 + [105] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 + [106] call mul16s + [107] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 to:sin16s_gen2::@4 sin16s_gen2::@4: scope:[sin16s_gen2] from sin16s_gen2::@3 - [107] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 - [108] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 - [109] (signed word~) sin16s_gen2::$8 ← (signed word)(word~) sin16s_gen2::$6 - [110] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 - [111] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [112] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 - [113] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 - [114] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1 + [108] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 + [109] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 + [110] (signed word~) sin16s_gen2::$8 ← (signed word)(word~) sin16s_gen2::$6 + [111] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 + [112] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD + [113] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 + [114] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 + [115] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1 to:sin16s_gen2::@return sin16s_gen2::@return: scope:[sin16s_gen2] from sin16s_gen2::@4 - [115] return + [116] return to:@return mul16s: scope:[mul16s] from sin16s_gen2::@3 - [116] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 - [117] call mul16u - [118] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + [117] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 + [118] call mul16u + [119] (dword) mul16u::return#2 ← (dword) mul16u::res#2 to:mul16s::@4 mul16s::@4: scope:[mul16s] from mul16s - [119] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - [120] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 + [120] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + [121] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 to:mul16s::@3 mul16s::@3: scope:[mul16s] from mul16s::@4 - [121] (word~) mul16s::$9 ← > (dword) mul16s::m#0 - [122] (word~) mul16s::$16 ← (word~) mul16s::$9 - ((word))(const signed word) sin16s_gen2::ampl#0 - [123] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 + [122] (word~) mul16s::$9 ← > (dword) mul16s::m#0 + [123] (word~) mul16s::$16 ← (word~) mul16s::$9 - ((word))(const signed word) sin16s_gen2::ampl#0 + [124] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 to:mul16s::@1 mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@4 - [124] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@4/(dword) mul16s::m#0 ) + [125] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@4/(dword) mul16s::m#0 ) to:mul16s::@2 mul16s::@2: scope:[mul16s] from mul16s::@1 - [125] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 + [126] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 to:mul16s::@return mul16s::@return: scope:[mul16s] from mul16s::@2 - [126] return + [127] return to:@return mul16u: scope:[mul16u] from mul16s mulu16_sel - [127] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 ) - [127] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) - [128] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 + [128] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 ) + [128] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) + [129] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@3 - [129] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 ) - [129] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@3/(dword) mul16u::res#6 ) - [129] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 ) - [130] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 + [130] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 ) + [130] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@3/(dword) mul16u::res#6 ) + [130] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 ) + [131] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 to:mul16u::@return mul16u::@return: scope:[mul16u] from mul16u::@1 - [131] return + [132] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [132] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [133] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@3 + [133] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [134] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@3 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 - [134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [135] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@3 mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4 - [135] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) - [136] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [137] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [136] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 ) + [137] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [138] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:mul16u::@1 sin16s: scope:[sin16s] from sin16s_gen2::@1 - [138] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 + [139] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 to:sin16s::@4 sin16s::@4: scope:[sin16s] from sin16s - [139] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 + [140] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 to:sin16s::@1 sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 - [140] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [140] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) - [141] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 + [141] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [141] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) + [142] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 to:sin16s::@5 sin16s::@5: scope:[sin16s] from sin16s::@1 - [142] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 + [143] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 to:sin16s::@2 sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5 - [143] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) - [144] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 - [145] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 - [146] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 - [147] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 - [148] call mulu16_sel - [149] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + [144] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) + [145] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 + [146] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 + [147] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 + [148] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 + [149] call mulu16_sel + [150] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 to:sin16s::@7 sin16s::@7: scope:[sin16s] from sin16s::@2 - [150] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 - [151] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - [152] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 - [153] call mulu16_sel - [154] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 + [151] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 + [152] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + [153] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 + [154] call mulu16_sel + [155] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 to:sin16s::@8 sin16s::@8: scope:[sin16s] from sin16s::@7 - [155] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - [156] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - [157] call mulu16_sel - [158] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + [156] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + [157] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + [158] call mulu16_sel + [159] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 to:sin16s::@9 sin16s::@9: scope:[sin16s] from sin16s::@8 - [159] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - [160] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 - [161] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - [162] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 - [163] call mulu16_sel - [164] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 + [160] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + [161] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 + [162] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + [163] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 + [164] call mulu16_sel + [165] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 to:sin16s::@10 sin16s::@10: scope:[sin16s] from sin16s::@9 - [165] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - [166] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - [167] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 - [168] call mulu16_sel - [169] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + [166] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + [167] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + [168] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 + [169] call mulu16_sel + [170] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 to:sin16s::@11 sin16s::@11: scope:[sin16s] from sin16s::@10 - [170] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - [171] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [172] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 - [173] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@12 + [171] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + [172] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [173] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 + [174] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@12 to:sin16s::@6 sin16s::@6: scope:[sin16s] from sin16s::@11 - [174] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 + [175] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 to:sin16s::@3 sin16s::@3: scope:[sin16s] from sin16s::@12 sin16s::@6 - [175] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) + [176] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) to:sin16s::@return sin16s::@return: scope:[sin16s] from sin16s::@3 - [176] return + [177] return to:@return sin16s::@12: scope:[sin16s] from sin16s::@11 - [177] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + [178] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 to:sin16s::@3 mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@2 sin16s::@7 sin16s::@8 sin16s::@9 - [178] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [178] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(dword/signed dword) $10000/(byte/signed byte/word/signed word/dword/signed dword) 6 ) - [178] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 ) - [179] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 - [180] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - [181] call mul16u - [182] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + [179] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [179] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(dword/signed dword) $10000/(byte/signed byte/word/signed word/dword/signed dword) 6 ) + [179] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 ) + [180] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 + [181] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + [182] call mul16u + [183] (dword) mul16u::return#3 ← (dword) mul16u::res#2 to:mulu16_sel::@1 mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel - [183] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - [184] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 - [185] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 + [184] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + [185] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 + [186] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 to:mulu16_sel::@return mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@1 - [186] return + [187] return to:@return div32u16u: scope:[div32u16u] from sin16s_gen2 - [187] phi() - [188] call divr16u - [189] (word) divr16u::return#2 ← (word) divr16u::return#0 + [188] phi() + [189] call divr16u + [190] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div32u16u::@1 div32u16u::@1: scope:[div32u16u] from div32u16u - [190] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 - [191] (word) divr16u::rem#4 ← (word) rem16u#1 - [192] call divr16u - [193] (word) divr16u::return#3 ← (word) divr16u::return#0 + [191] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 + [192] (word) divr16u::rem#4 ← (word) rem16u#1 + [193] call divr16u + [194] (word) divr16u::return#3 ← (word) divr16u::return#0 to:div32u16u::@2 div32u16u::@2: scope:[div32u16u] from div32u16u::@1 - [194] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - [195] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 + [195] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + [196] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 to:div32u16u::@return div32u16u::@return: scope:[div32u16u] from div32u16u::@2 - [196] return + [197] return to:@return divr16u: scope:[divr16u] from div32u16u div32u16u::@1 - [197] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 ) - [197] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@1/(word) divr16u::rem#4 ) + [198] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 ) + [198] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@1/(word) divr16u::rem#4 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [198] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) - [198] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) - [198] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [198] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) - [199] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [200] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [201] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 - [202] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 + [199] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) + [199] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) + [199] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [199] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) + [200] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [201] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [202] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 + [203] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [203] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 + [204] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [204] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [205] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [206] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [207] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 + [205] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [206] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [207] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [208] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [208] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [209] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 + [209] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [210] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [210] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [210] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [211] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [212] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 + [211] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [211] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [212] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [213] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [213] (word) rem16u#1 ← (word) divr16u::rem#11 + [214] (word) rem16u#1 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [214] return + [215] return to:@return fill: scope:[fill] from main::@3 main::@4 - [215] (byte) fill::val#3 ← phi( main::@3/(const byte) BLACK#0 main::@4/(const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 ) - [215] (byte*) fill::addr#0 ← phi( main::@3/(const byte*) SCREEN#0 main::@4/(const byte*) COLS#0 ) - [216] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) $3e8 + [216] (byte) fill::val#3 ← phi( main::@3/(const byte) BLACK#0 main::@4/(const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 ) + [216] (byte*) fill::addr#0 ← phi( main::@3/(const byte*) SCREEN#0 main::@4/(const byte*) COLS#0 ) + [217] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) $3e8 to:fill::@1 fill::@1: scope:[fill] from fill fill::@1 - [217] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) - [218] *((byte*) fill::addr#2) ← (byte) fill::val#3 - [219] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 - [220] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 + [218] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) + [219] *((byte*) fill::addr#2) ← (byte) fill::val#3 + [220] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 + [221] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 to:fill::@return fill::@return: scope:[fill] from fill::@1 - [221] return + [222] return to:@return @@ -3182,6 +3183,7 @@ VARIABLE REGISTER WEIGHTS (byte) fill::val#3 1.8333333333333333 (void()) loop() (signed word*~) loop::$1 22.0 +(word) loop::$5 22.0 (signed word) loop::xpos (signed word) loop::xpos#0 22.0 (void()) main() @@ -3354,7 +3356,7 @@ VARIABLE REGISTER WEIGHTS (dword) sin16s_gen2::x#2 2.75 (signed word[XSIN_SIZE#0]) xsin (word) xsin_idx -(word) xsin_idx#11 4.714285714285714 +(word) xsin_idx#11 4.125 (word) xsin_idx#19 11.0 (word) xsin_idx#3 11.0 @@ -3385,6 +3387,7 @@ Initial phi equivalence classes [ divr16u::i#2 divr16u::i#1 ] [ fill::val#3 ] [ fill::addr#2 fill::addr#0 fill::addr#1 ] +Added variable loop::$5 to zero page equivalence class [ loop::$5 ] Added variable loop::$1 to zero page equivalence class [ loop::$1 ] Added variable loop::xpos#0 to zero page equivalence class [ loop::xpos#0 ] Added variable render_logo::xpos#0 to zero page equivalence class [ render_logo::xpos#0 ] @@ -3472,6 +3475,7 @@ Complete equivalence classes [ divr16u::i#2 divr16u::i#1 ] [ fill::val#3 ] [ fill::addr#2 fill::addr#0 fill::addr#1 ] +[ loop::$5 ] [ loop::$1 ] [ loop::xpos#0 ] [ render_logo::xpos#0 ] @@ -3558,66 +3562,67 @@ Allocated zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotien Allocated zp ZP_BYTE:51 [ divr16u::i#2 divr16u::i#1 ] Allocated zp ZP_BYTE:52 [ fill::val#3 ] Allocated zp ZP_WORD:53 [ fill::addr#2 fill::addr#0 fill::addr#1 ] -Allocated zp ZP_WORD:55 [ loop::$1 ] -Allocated zp ZP_WORD:57 [ loop::xpos#0 ] -Allocated zp ZP_WORD:59 [ render_logo::xpos#0 ] -Allocated zp ZP_BYTE:61 [ render_logo::$0 ] -Allocated zp ZP_BYTE:62 [ render_logo::$1 ] -Allocated zp ZP_BYTE:63 [ render_logo::$2 ] -Allocated zp ZP_WORD:64 [ render_logo::$3 ] -Allocated zp ZP_BYTE:66 [ render_logo::x_char#0 ] -Allocated zp ZP_BYTE:67 [ render_logo::$34 ] -Allocated zp ZP_BYTE:68 [ render_logo::$38 ] -Allocated zp ZP_BYTE:69 [ render_logo::$42 ] -Allocated zp ZP_BYTE:70 [ render_logo::$46 ] -Allocated zp ZP_BYTE:71 [ render_logo::$50 ] -Allocated zp ZP_BYTE:72 [ render_logo::$17 ] -Allocated zp ZP_BYTE:73 [ render_logo::$80 ] -Allocated zp ZP_BYTE:74 [ render_logo::$84 ] -Allocated zp ZP_BYTE:75 [ render_logo::$88 ] -Allocated zp ZP_BYTE:76 [ render_logo::$92 ] -Allocated zp ZP_BYTE:77 [ render_logo::$96 ] -Allocated zp ZP_DWORD:78 [ div32u16u::return#2 ] -Allocated zp ZP_DWORD:82 [ sin16s_gen2::step#0 ] -Allocated zp ZP_WORD:86 [ sin16s::return#0 ] -Allocated zp ZP_WORD:88 [ mul16s::a#0 ] -Allocated zp ZP_DWORD:90 [ mul16s::return#2 ] -Allocated zp ZP_DWORD:94 [ sin16s_gen2::$5 ] -Allocated zp ZP_WORD:98 [ sin16s_gen2::$6 ] -Allocated zp ZP_WORD:100 [ sin16s_gen2::$8 ] -Allocated zp ZP_DWORD:102 [ mul16u::return#2 ] -Allocated zp ZP_WORD:106 [ mul16s::$9 ] -Allocated zp ZP_WORD:108 [ mul16s::$16 ] -Allocated zp ZP_DWORD:110 [ mul16s::return#0 ] -Allocated zp ZP_BYTE:114 [ mul16u::$1 ] -Allocated zp ZP_DWORD:115 [ sin16s::$4 ] -Allocated zp ZP_WORD:119 [ sin16s::x1#0 ] -Allocated zp ZP_WORD:121 [ mulu16_sel::return#0 ] -Allocated zp ZP_WORD:123 [ sin16s::x2#0 ] -Allocated zp ZP_WORD:125 [ mulu16_sel::return#1 ] -Allocated zp ZP_WORD:127 [ sin16s::x3#0 ] -Allocated zp ZP_WORD:129 [ mulu16_sel::return#2 ] -Allocated zp ZP_WORD:131 [ sin16s::x3_6#0 ] -Allocated zp ZP_WORD:133 [ sin16s::usinx#0 ] -Allocated zp ZP_WORD:135 [ mulu16_sel::return#10 ] -Allocated zp ZP_WORD:137 [ sin16s::x4#0 ] -Allocated zp ZP_WORD:139 [ mulu16_sel::return#11 ] -Allocated zp ZP_WORD:141 [ sin16s::x5#0 ] -Allocated zp ZP_WORD:143 [ sin16s::x5_128#0 ] -Allocated zp ZP_WORD:145 [ sin16s::usinx#1 ] -Allocated zp ZP_DWORD:147 [ mul16u::return#3 ] -Allocated zp ZP_DWORD:151 [ mulu16_sel::$0 ] -Allocated zp ZP_DWORD:155 [ mulu16_sel::$1 ] -Allocated zp ZP_WORD:159 [ mulu16_sel::return#12 ] -Allocated zp ZP_WORD:161 [ divr16u::return#2 ] -Allocated zp ZP_WORD:163 [ div32u16u::quotient_hi#0 ] -Allocated zp ZP_WORD:165 [ divr16u::return#3 ] -Allocated zp ZP_WORD:167 [ div32u16u::quotient_lo#0 ] -Allocated zp ZP_DWORD:169 [ div32u16u::return#0 ] -Allocated zp ZP_BYTE:173 [ divr16u::$1 ] -Allocated zp ZP_BYTE:174 [ divr16u::$2 ] -Allocated zp ZP_WORD:175 [ rem16u#1 ] -Allocated zp ZP_WORD:177 [ fill::end#0 ] +Allocated zp ZP_WORD:55 [ loop::$5 ] +Allocated zp ZP_WORD:57 [ loop::$1 ] +Allocated zp ZP_WORD:59 [ loop::xpos#0 ] +Allocated zp ZP_WORD:61 [ render_logo::xpos#0 ] +Allocated zp ZP_BYTE:63 [ render_logo::$0 ] +Allocated zp ZP_BYTE:64 [ render_logo::$1 ] +Allocated zp ZP_BYTE:65 [ render_logo::$2 ] +Allocated zp ZP_WORD:66 [ render_logo::$3 ] +Allocated zp ZP_BYTE:68 [ render_logo::x_char#0 ] +Allocated zp ZP_BYTE:69 [ render_logo::$34 ] +Allocated zp ZP_BYTE:70 [ render_logo::$38 ] +Allocated zp ZP_BYTE:71 [ render_logo::$42 ] +Allocated zp ZP_BYTE:72 [ render_logo::$46 ] +Allocated zp ZP_BYTE:73 [ render_logo::$50 ] +Allocated zp ZP_BYTE:74 [ render_logo::$17 ] +Allocated zp ZP_BYTE:75 [ render_logo::$80 ] +Allocated zp ZP_BYTE:76 [ render_logo::$84 ] +Allocated zp ZP_BYTE:77 [ render_logo::$88 ] +Allocated zp ZP_BYTE:78 [ render_logo::$92 ] +Allocated zp ZP_BYTE:79 [ render_logo::$96 ] +Allocated zp ZP_DWORD:80 [ div32u16u::return#2 ] +Allocated zp ZP_DWORD:84 [ sin16s_gen2::step#0 ] +Allocated zp ZP_WORD:88 [ sin16s::return#0 ] +Allocated zp ZP_WORD:90 [ mul16s::a#0 ] +Allocated zp ZP_DWORD:92 [ mul16s::return#2 ] +Allocated zp ZP_DWORD:96 [ sin16s_gen2::$5 ] +Allocated zp ZP_WORD:100 [ sin16s_gen2::$6 ] +Allocated zp ZP_WORD:102 [ sin16s_gen2::$8 ] +Allocated zp ZP_DWORD:104 [ mul16u::return#2 ] +Allocated zp ZP_WORD:108 [ mul16s::$9 ] +Allocated zp ZP_WORD:110 [ mul16s::$16 ] +Allocated zp ZP_DWORD:112 [ mul16s::return#0 ] +Allocated zp ZP_BYTE:116 [ mul16u::$1 ] +Allocated zp ZP_DWORD:117 [ sin16s::$4 ] +Allocated zp ZP_WORD:121 [ sin16s::x1#0 ] +Allocated zp ZP_WORD:123 [ mulu16_sel::return#0 ] +Allocated zp ZP_WORD:125 [ sin16s::x2#0 ] +Allocated zp ZP_WORD:127 [ mulu16_sel::return#1 ] +Allocated zp ZP_WORD:129 [ sin16s::x3#0 ] +Allocated zp ZP_WORD:131 [ mulu16_sel::return#2 ] +Allocated zp ZP_WORD:133 [ sin16s::x3_6#0 ] +Allocated zp ZP_WORD:135 [ sin16s::usinx#0 ] +Allocated zp ZP_WORD:137 [ mulu16_sel::return#10 ] +Allocated zp ZP_WORD:139 [ sin16s::x4#0 ] +Allocated zp ZP_WORD:141 [ mulu16_sel::return#11 ] +Allocated zp ZP_WORD:143 [ sin16s::x5#0 ] +Allocated zp ZP_WORD:145 [ sin16s::x5_128#0 ] +Allocated zp ZP_WORD:147 [ sin16s::usinx#1 ] +Allocated zp ZP_DWORD:149 [ mul16u::return#3 ] +Allocated zp ZP_DWORD:153 [ mulu16_sel::$0 ] +Allocated zp ZP_DWORD:157 [ mulu16_sel::$1 ] +Allocated zp ZP_WORD:161 [ mulu16_sel::return#12 ] +Allocated zp ZP_WORD:163 [ divr16u::return#2 ] +Allocated zp ZP_WORD:165 [ div32u16u::quotient_hi#0 ] +Allocated zp ZP_WORD:167 [ divr16u::return#3 ] +Allocated zp ZP_WORD:169 [ div32u16u::quotient_lo#0 ] +Allocated zp ZP_DWORD:171 [ div32u16u::return#0 ] +Allocated zp ZP_BYTE:175 [ divr16u::$1 ] +Allocated zp ZP_BYTE:176 [ divr16u::$2 ] +Allocated zp ZP_WORD:177 [ rem16u#1 ] +Allocated zp ZP_WORD:179 [ fill::end#0 ] INITIAL ASM //SEG0 File Comments @@ -3626,6 +3631,7 @@ INITIAL ASM :BasicUpstart(bbegin) .pc = $80d "Program" //SEG2 Global Constants & labels + .const SIZEOF_SIGNED_WORD = 2 .label RASTER = $d012 .label BORDERCOL = $d020 .label BGCOL = $d021 @@ -3649,7 +3655,7 @@ INITIAL ASM .label SCREEN = $400 .label LOGO = $2000 .const XSIN_SIZE = $200 - .label rem16u = $af + .label rem16u = $b1 .label xsin_idx = 3 //SEG3 @begin bbegin: @@ -3702,12 +3708,12 @@ main: { lda #VIC_MCM sta D016 //SEG22 [13] call fill - //SEG23 [215] phi from main::@3 to fill [phi:main::@3->fill] + //SEG23 [216] phi from main::@3 to fill [phi:main::@3->fill] fill_from_b3: - //SEG24 [215] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuz1=vbuc1 + //SEG24 [216] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuz1=vbuc1 lda #BLACK sta fill.val - //SEG25 [215] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 + //SEG25 [216] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 lda #SCREEN @@ -3719,12 +3725,12 @@ main: { //SEG27 main::@4 b4: //SEG28 [15] call fill - //SEG29 [215] phi from main::@4 to fill [phi:main::@4->fill] + //SEG29 [216] phi from main::@4 to fill [phi:main::@4->fill] fill_from_b4: - //SEG30 [215] phi (byte) fill::val#3 = (const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@4->fill#0] -- vbuz1=vbuc1 + //SEG30 [216] phi (byte) fill::val#3 = (const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@4->fill#0] -- vbuz1=vbuc1 lda #WHITE|8 sta fill.val - //SEG31 [215] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 + //SEG31 [216] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 lda #COLS @@ -3758,7 +3764,7 @@ main: { //SEG41 main::@2 b2: //SEG42 [21] call sin16s_gen2 - //SEG43 [96] phi from main::@2 to sin16s_gen2 [phi:main::@2->sin16s_gen2] + //SEG43 [97] phi from main::@2 to sin16s_gen2 [phi:main::@2->sin16s_gen2] sin16s_gen2_from_b2: jsr sin16s_gen2 //SEG44 [22] phi from main::@2 to main::@5 [phi:main::@2->main::@5] @@ -3778,8 +3784,9 @@ main: { } //SEG50 loop loop: { - .label _1 = $37 - .label xpos = $39 + .label _1 = $39 + .label _5 = $37 + .label xpos = $3b //SEG51 [26] phi from loop to loop::@1 [phi:loop->loop::@1] b1_from_loop: //SEG52 [26] phi (word) xsin_idx#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vwuz1=vbuc1 @@ -3803,82 +3810,86 @@ loop: { b3: //SEG57 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG58 [29] (signed word*~) loop::$1 ← (const signed word[XSIN_SIZE#0]) xsin#0 + (word) xsin_idx#11 -- pwsz1=pwsc1_plus_vwuz2 + //SEG58 [29] (word) loop::$5 ← (word) xsin_idx#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz2_rol_1 lda xsin_idx + asl + sta _5 + lda xsin_idx+1 + rol + sta _5+1 + //SEG59 [30] (signed word*~) loop::$1 ← (const signed word[XSIN_SIZE#0]) xsin#0 + (word) loop::$5 -- pwsz1=pwsc1_plus_vwuz2 + lda _5 clc adc #xsin sta _1+1 - //SEG59 [30] (signed word) loop::xpos#0 ← *((signed word*~) loop::$1) -- vwsz1=_deref_pwsz2 + //SEG60 [31] (signed word) loop::xpos#0 ← *((signed word*~) loop::$1) -- vwsz1=_deref_pwsz2 ldy #0 lda (_1),y sta xpos iny lda (_1),y sta xpos+1 - //SEG60 [31] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 -- vwsz1=vwsz2 + //SEG61 [32] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 -- vwsz1=vwsz2 lda xpos sta render_logo.xpos lda xpos+1 sta render_logo.xpos+1 - //SEG61 [32] call render_logo + //SEG62 [33] call render_logo jsr render_logo jmp b5 - //SEG62 loop::@5 + //SEG63 loop::@5 b5: - //SEG63 [33] (word) xsin_idx#3 ← (word) xsin_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vwuz1=vwuz1_plus_2 - lda xsin_idx - clc - adc #2 - sta xsin_idx - bcc !+ + //SEG64 [34] (word) xsin_idx#3 ← ++ (word) xsin_idx#11 -- vwuz1=_inc_vwuz1 + inc xsin_idx + bne !+ inc xsin_idx+1 !: - //SEG64 [34] if((word) xsin_idx#3!=(const word) XSIN_SIZE#0*(byte/signed byte/word/signed word/dword/signed dword) 2) goto loop::@6 -- vwuz1_neq_vwuc1_then_la1 + //SEG65 [35] if((word) xsin_idx#3!=(const word) XSIN_SIZE#0) goto loop::@6 -- vwuz1_neq_vwuc1_then_la1 lda xsin_idx+1 - cmp #>XSIN_SIZE*2 + cmp #>XSIN_SIZE bne b6_from_b5 lda xsin_idx - cmp #loop::@4] + //SEG66 [36] phi from loop::@5 to loop::@4 [phi:loop::@5->loop::@4] b4_from_b5: - //SEG66 [35] phi (word) xsin_idx#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@5->loop::@4#0] -- vwuz1=vbuc1 + //SEG67 [36] phi (word) xsin_idx#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@5->loop::@4#0] -- vwuz1=vbuc1 lda #0 sta xsin_idx lda #0 sta xsin_idx+1 jmp b4 - //SEG67 loop::@4 + //SEG68 loop::@4 b4: - //SEG68 [36] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG69 [37] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG69 [26] phi from loop::@4 to loop::@1 [phi:loop::@4->loop::@1] + //SEG70 [26] phi from loop::@4 to loop::@1 [phi:loop::@4->loop::@1] b1_from_b4: - //SEG70 [26] phi (word) xsin_idx#11 = (word) xsin_idx#19 [phi:loop::@4->loop::@1#0] -- register_copy + //SEG71 [26] phi (word) xsin_idx#11 = (word) xsin_idx#19 [phi:loop::@4->loop::@1#0] -- register_copy jmp b1 - //SEG71 [37] phi from loop::@5 to loop::@6 [phi:loop::@5->loop::@6] + //SEG72 [38] phi from loop::@5 to loop::@6 [phi:loop::@5->loop::@6] b6_from_b5: jmp b6 - //SEG72 loop::@6 + //SEG73 loop::@6 b6: - //SEG73 [35] phi from loop::@6 to loop::@4 [phi:loop::@6->loop::@4] + //SEG74 [36] phi from loop::@6 to loop::@4 [phi:loop::@6->loop::@4] b4_from_b6: - //SEG74 [35] phi (word) xsin_idx#19 = (word) xsin_idx#3 [phi:loop::@6->loop::@4#0] -- register_copy + //SEG75 [36] phi (word) xsin_idx#19 = (word) xsin_idx#3 [phi:loop::@6->loop::@4#0] -- register_copy jmp b4 } -//SEG75 render_logo -// render_logo(signed word zeropage($3b) xpos) +//SEG76 render_logo +// render_logo(signed word zeropage($3d) xpos) render_logo: { - .label _0 = $3d - .label _1 = $3e - .label _2 = $3f - .label _3 = $40 - .label _17 = $48 - .label xpos = $3b - .label x_char = $42 + .label _0 = $3f + .label _1 = $40 + .label _2 = $41 + .label _3 = $42 + .label _17 = $4a + .label xpos = $3d + .label x_char = $44 .label screen_idx = 5 .label logo_idx = 6 .label screen_idx_5 = 8 @@ -3887,32 +3898,32 @@ render_logo: { .label screen_idx_15 = 8 .label logo_idx_11 = 7 .label screen_idx_21 = 8 - .label _34 = $43 - .label _38 = $44 - .label _42 = $45 - .label _46 = $46 - .label _50 = $47 - .label _80 = $49 - .label _84 = $4a - .label _88 = $4b - .label _92 = $4c - .label _96 = $4d + .label _34 = $45 + .label _38 = $46 + .label _42 = $47 + .label _46 = $48 + .label _50 = $49 + .label _80 = $4b + .label _84 = $4c + .label _88 = $4d + .label _92 = $4e + .label _96 = $4f .label logo_idx_14 = 7 - //SEG76 [38] (byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos#0 -- vbuz1=_byte_vwsz2 + //SEG77 [39] (byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos#0 -- vbuz1=_byte_vwsz2 lda xpos sta _0 - //SEG77 [39] (byte~) render_logo::$1 ← (byte~) render_logo::$0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG78 [40] (byte~) render_logo::$1 ← (byte~) render_logo::$0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and _0 sta _1 - //SEG78 [40] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1 -- vbuz1=vbuc1_bor_vbuz2 + //SEG79 [41] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1 -- vbuz1=vbuc1_bor_vbuz2 lda #VIC_MCM ora _1 sta _2 - //SEG79 [41] *((const byte*) D016#0) ← (byte~) render_logo::$2 -- _deref_pbuc1=vbuz1 + //SEG80 [42] *((const byte*) D016#0) ← (byte~) render_logo::$2 -- _deref_pbuc1=vbuz1 lda _2 sta D016 - //SEG80 [42] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwsz1=vwsz2_ror_3 + //SEG81 [43] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwsz1=vwsz2_ror_3 lda xpos+1 cmp #$80 ror @@ -3928,323 +3939,323 @@ render_logo: { cmp #$80 ror _3+1 ror _3 - //SEG81 [43] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3 -- vbsz1=_sbyte_vwsz2 + //SEG82 [44] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3 -- vbsz1=_sbyte_vwsz2 lda _3 sta x_char - //SEG82 [44] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 -- vwsz1_lt_0_then_la1 + //SEG83 [45] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 -- vwsz1_lt_0_then_la1 lda xpos+1 bmi b1 - //SEG83 [45] phi from render_logo to render_logo::@2 [phi:render_logo->render_logo::@2] + //SEG84 [46] phi from render_logo to render_logo::@2 [phi:render_logo->render_logo::@2] b2_from_render_logo: - //SEG84 [45] phi (byte) render_logo::screen_idx#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo->render_logo::@2#0] -- vbuz1=vbuc1 + //SEG85 [46] phi (byte) render_logo::screen_idx#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo->render_logo::@2#0] -- vbuz1=vbuc1 lda #0 sta screen_idx jmp b2 - //SEG85 render_logo::@2 + //SEG86 render_logo::@2 b2: - //SEG86 [46] if((byte) render_logo::screen_idx#18!=(byte)(signed byte) render_logo::x_char#0) goto render_logo::@3 -- vbuz1_neq_vbuz2_then_la1 + //SEG87 [47] if((byte) render_logo::screen_idx#18!=(byte)(signed byte) render_logo::x_char#0) goto render_logo::@3 -- vbuz1_neq_vbuz2_then_la1 lda screen_idx cmp x_char bne b3 - //SEG87 [47] phi from render_logo::@2 to render_logo::@5 [phi:render_logo::@2->render_logo::@5] + //SEG88 [48] phi from render_logo::@2 to render_logo::@5 [phi:render_logo::@2->render_logo::@5] b5_from_b2: - //SEG88 [47] phi (byte) render_logo::logo_idx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@2->render_logo::@5#0] -- vbuz1=vbuc1 + //SEG89 [48] phi (byte) render_logo::logo_idx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@2->render_logo::@5#0] -- vbuz1=vbuc1 lda #0 sta logo_idx - //SEG89 [47] phi (byte) render_logo::screen_idx#10 = (byte) render_logo::screen_idx#18 [phi:render_logo::@2->render_logo::@5#1] -- register_copy + //SEG90 [48] phi (byte) render_logo::screen_idx#10 = (byte) render_logo::screen_idx#18 [phi:render_logo::@2->render_logo::@5#1] -- register_copy jmp b5 - //SEG90 render_logo::@5 + //SEG91 render_logo::@5 b5: - //SEG91 [48] if((byte) render_logo::screen_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG92 [49] if((byte) render_logo::screen_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@6 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp screen_idx bne b6 jmp breturn - //SEG92 render_logo::@return + //SEG93 render_logo::@return breturn: - //SEG93 [49] return + //SEG94 [50] return rts - //SEG94 render_logo::@6 + //SEG95 render_logo::@6 b6: - //SEG95 [50] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#10) ← (byte) render_logo::logo_idx#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG96 [51] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#10) ← (byte) render_logo::logo_idx#10 -- pbuc1_derefidx_vbuz1=vbuz2 lda logo_idx ldy screen_idx sta SCREEN,y jmp b15_1 - //SEG96 render_logo::@15_1 + //SEG97 render_logo::@15_1 b15_1: - //SEG97 [51] (byte/signed word/word/dword/signed dword~) render_logo::$34 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_vbuc1 + //SEG98 [52] (byte/signed word/word/dword/signed dword~) render_logo::$34 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_vbuc1 lax logo_idx axs #-[$28*1] stx _34 - //SEG98 [52] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$34 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG99 [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$34 -- pbuc1_derefidx_vbuz1=vbuz2 lda _34 ldy screen_idx sta SCREEN+$28*1,y jmp b15_2 - //SEG99 render_logo::@15_2 + //SEG100 render_logo::@15_2 b15_2: - //SEG100 [53] (byte/signed word/word/dword/signed dword~) render_logo::$38 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_plus_vbuc1 + //SEG101 [54] (byte/signed word/word/dword/signed dword~) render_logo::$38 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_plus_vbuc1 lax logo_idx axs #-[$28*2] stx _38 - //SEG101 [54] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$38 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG102 [55] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$38 -- pbuc1_derefidx_vbuz1=vbuz2 lda _38 ldy screen_idx sta SCREEN+$28*2,y jmp b15_3 - //SEG102 render_logo::@15_3 + //SEG103 render_logo::@15_3 b15_3: - //SEG103 [55] (byte/signed word/word/dword/signed dword~) render_logo::$42 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 + //SEG104 [56] (byte/signed word/word/dword/signed dword~) render_logo::$42 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 lax logo_idx axs #-[$28*3] stx _42 - //SEG104 [56] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$42 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG105 [57] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$42 -- pbuc1_derefidx_vbuz1=vbuz2 lda _42 ldy screen_idx sta SCREEN+$28*3,y jmp b15_4 - //SEG105 render_logo::@15_4 + //SEG106 render_logo::@15_4 b15_4: - //SEG106 [57] (byte/signed word/word/dword/signed dword~) render_logo::$46 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_plus_vbuc1 + //SEG107 [58] (byte/signed word/word/dword/signed dword~) render_logo::$46 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_plus_vbuc1 lax logo_idx axs #-[$28*4] stx _46 - //SEG107 [58] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$46 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG108 [59] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$46 -- pbuc1_derefidx_vbuz1=vbuz2 lda _46 ldy screen_idx sta SCREEN+$28*4,y jmp b15_5 - //SEG108 render_logo::@15_5 + //SEG109 render_logo::@15_5 b15_5: - //SEG109 [59] (byte/signed word/word/dword/signed dword~) render_logo::$50 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuz1=vbuz2_plus_vbuc1 + //SEG110 [60] (byte/signed word/word/dword/signed dword~) render_logo::$50 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuz1=vbuz2_plus_vbuc1 lax logo_idx axs #-[$28*5] stx _50 - //SEG110 [60] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$50 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG111 [61] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$50 -- pbuc1_derefidx_vbuz1=vbuz2 lda _50 ldy screen_idx sta SCREEN+$28*5,y jmp b7 - //SEG111 render_logo::@7 + //SEG112 render_logo::@7 b7: - //SEG112 [61] (byte) render_logo::screen_idx#4 ← ++ (byte) render_logo::screen_idx#10 -- vbuz1=_inc_vbuz1 + //SEG113 [62] (byte) render_logo::screen_idx#4 ← ++ (byte) render_logo::screen_idx#10 -- vbuz1=_inc_vbuz1 inc screen_idx - //SEG113 [62] (byte) render_logo::logo_idx#3 ← ++ (byte) render_logo::logo_idx#10 -- vbuz1=_inc_vbuz1 + //SEG114 [63] (byte) render_logo::logo_idx#3 ← ++ (byte) render_logo::logo_idx#10 -- vbuz1=_inc_vbuz1 inc logo_idx - //SEG114 [47] phi from render_logo::@7 to render_logo::@5 [phi:render_logo::@7->render_logo::@5] + //SEG115 [48] phi from render_logo::@7 to render_logo::@5 [phi:render_logo::@7->render_logo::@5] b5_from_b7: - //SEG115 [47] phi (byte) render_logo::logo_idx#10 = (byte) render_logo::logo_idx#3 [phi:render_logo::@7->render_logo::@5#0] -- register_copy - //SEG116 [47] phi (byte) render_logo::screen_idx#10 = (byte) render_logo::screen_idx#4 [phi:render_logo::@7->render_logo::@5#1] -- register_copy + //SEG116 [48] phi (byte) render_logo::logo_idx#10 = (byte) render_logo::logo_idx#3 [phi:render_logo::@7->render_logo::@5#0] -- register_copy + //SEG117 [48] phi (byte) render_logo::screen_idx#10 = (byte) render_logo::screen_idx#4 [phi:render_logo::@7->render_logo::@5#1] -- register_copy jmp b5 - //SEG117 render_logo::@3 + //SEG118 render_logo::@3 b3: - //SEG118 [63] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG119 [64] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 ldy screen_idx sta SCREEN,y jmp b7_1 - //SEG119 render_logo::@7_1 + //SEG120 render_logo::@7_1 b7_1: - //SEG120 [64] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG121 [65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 ldy screen_idx sta SCREEN+$28*1,y jmp b7_2 - //SEG121 render_logo::@7_2 + //SEG122 render_logo::@7_2 b7_2: - //SEG122 [65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG123 [66] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 ldy screen_idx sta SCREEN+$28*2,y jmp b7_3 - //SEG123 render_logo::@7_3 + //SEG124 render_logo::@7_3 b7_3: - //SEG124 [66] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG125 [67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 ldy screen_idx sta SCREEN+$28*3,y jmp b7_4 - //SEG125 render_logo::@7_4 + //SEG126 render_logo::@7_4 b7_4: - //SEG126 [67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG127 [68] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 ldy screen_idx sta SCREEN+$28*4,y jmp b7_5 - //SEG127 render_logo::@7_5 + //SEG128 render_logo::@7_5 b7_5: - //SEG128 [68] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG129 [69] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 ldy screen_idx sta SCREEN+$28*5,y jmp b4 - //SEG129 render_logo::@4 + //SEG130 render_logo::@4 b4: - //SEG130 [69] (byte) render_logo::screen_idx#3 ← ++ (byte) render_logo::screen_idx#18 -- vbuz1=_inc_vbuz1 + //SEG131 [70] (byte) render_logo::screen_idx#3 ← ++ (byte) render_logo::screen_idx#18 -- vbuz1=_inc_vbuz1 inc screen_idx - //SEG131 [45] phi from render_logo::@4 to render_logo::@2 [phi:render_logo::@4->render_logo::@2] + //SEG132 [46] phi from render_logo::@4 to render_logo::@2 [phi:render_logo::@4->render_logo::@2] b2_from_b4: - //SEG132 [45] phi (byte) render_logo::screen_idx#18 = (byte) render_logo::screen_idx#3 [phi:render_logo::@4->render_logo::@2#0] -- register_copy + //SEG133 [46] phi (byte) render_logo::screen_idx#18 = (byte) render_logo::screen_idx#3 [phi:render_logo::@4->render_logo::@2#0] -- register_copy jmp b2 - //SEG133 render_logo::@1 + //SEG134 render_logo::@1 b1: - //SEG134 [70] (signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#0 -- vbsz1=_neg_vbsz2 + //SEG135 [71] (signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#0 -- vbsz1=_neg_vbsz2 lda x_char eor #$ff clc adc #1 sta _17 - //SEG135 [71] (byte~) render_logo::logo_idx#14 ← (byte)(signed byte~) render_logo::$17 -- vbuz1=vbuz2 + //SEG136 [72] (byte~) render_logo::logo_idx#14 ← (byte)(signed byte~) render_logo::$17 -- vbuz1=vbuz2 lda _17 sta logo_idx_14 - //SEG136 [72] phi from render_logo::@1 to render_logo::@8 [phi:render_logo::@1->render_logo::@8] + //SEG137 [73] phi from render_logo::@1 to render_logo::@8 [phi:render_logo::@1->render_logo::@8] b8_from_b1: - //SEG137 [72] phi (byte) render_logo::screen_idx#21 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@1->render_logo::@8#0] -- vbuz1=vbuc1 + //SEG138 [73] phi (byte) render_logo::screen_idx#21 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@1->render_logo::@8#0] -- vbuz1=vbuc1 lda #0 sta screen_idx_21 - //SEG138 [72] phi (byte) render_logo::logo_idx#11 = (byte~) render_logo::logo_idx#14 [phi:render_logo::@1->render_logo::@8#1] -- register_copy + //SEG139 [73] phi (byte) render_logo::logo_idx#11 = (byte~) render_logo::logo_idx#14 [phi:render_logo::@1->render_logo::@8#1] -- register_copy jmp b8 - //SEG139 render_logo::@8 + //SEG140 render_logo::@8 b8: - //SEG140 [73] if((byte) render_logo::logo_idx#11!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG141 [74] if((byte) render_logo::logo_idx#11!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp logo_idx_11 bne b9 - //SEG141 [74] phi from render_logo::@13 render_logo::@8 to render_logo::@11 [phi:render_logo::@13/render_logo::@8->render_logo::@11] + //SEG142 [75] phi from render_logo::@13 render_logo::@8 to render_logo::@11 [phi:render_logo::@13/render_logo::@8->render_logo::@11] b11_from_b13: b11_from_b8: - //SEG142 [74] phi (byte) render_logo::screen_idx#15 = (byte) render_logo::screen_idx#6 [phi:render_logo::@13/render_logo::@8->render_logo::@11#0] -- register_copy + //SEG143 [75] phi (byte) render_logo::screen_idx#15 = (byte) render_logo::screen_idx#6 [phi:render_logo::@13/render_logo::@8->render_logo::@11#0] -- register_copy jmp b11 - //SEG143 render_logo::@11 + //SEG144 render_logo::@11 b11: - //SEG144 [75] if((byte) render_logo::screen_idx#15!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@12 -- vbuz1_neq_vbuc1_then_la1 + //SEG145 [76] if((byte) render_logo::screen_idx#15!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@12 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp screen_idx_15 bne b12 jmp breturn - //SEG145 render_logo::@12 + //SEG146 render_logo::@12 b12: - //SEG146 [76] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG147 [77] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 ldy screen_idx_15 sta SCREEN,y jmp b32_1 - //SEG147 render_logo::@32_1 + //SEG148 render_logo::@32_1 b32_1: - //SEG148 [77] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG149 [78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 ldy screen_idx_15 sta SCREEN+$28*1,y jmp b32_2 - //SEG149 render_logo::@32_2 + //SEG150 render_logo::@32_2 b32_2: - //SEG150 [78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG151 [79] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 ldy screen_idx_15 sta SCREEN+$28*2,y jmp b32_3 - //SEG151 render_logo::@32_3 + //SEG152 render_logo::@32_3 b32_3: - //SEG152 [79] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG153 [80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 ldy screen_idx_15 sta SCREEN+$28*3,y jmp b32_4 - //SEG153 render_logo::@32_4 + //SEG154 render_logo::@32_4 b32_4: - //SEG154 [80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG155 [81] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 ldy screen_idx_15 sta SCREEN+$28*4,y jmp b32_5 - //SEG155 render_logo::@32_5 + //SEG156 render_logo::@32_5 b32_5: - //SEG156 [81] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG157 [82] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 ldy screen_idx_15 sta SCREEN+$28*5,y jmp b13 - //SEG157 render_logo::@13 + //SEG158 render_logo::@13 b13: - //SEG158 [82] (byte) render_logo::screen_idx#6 ← ++ (byte) render_logo::screen_idx#15 -- vbuz1=_inc_vbuz1 + //SEG159 [83] (byte) render_logo::screen_idx#6 ← ++ (byte) render_logo::screen_idx#15 -- vbuz1=_inc_vbuz1 inc screen_idx_6 jmp b11_from_b13 - //SEG159 render_logo::@9 + //SEG160 render_logo::@9 b9: - //SEG160 [83] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#21) ← (byte) render_logo::logo_idx#11 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG161 [84] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#21) ← (byte) render_logo::logo_idx#11 -- pbuc1_derefidx_vbuz1=vbuz2 lda logo_idx_11 ldy screen_idx_21 sta SCREEN,y jmp b24_1 - //SEG161 render_logo::@24_1 + //SEG162 render_logo::@24_1 b24_1: - //SEG162 [84] (byte/signed word/word/dword/signed dword~) render_logo::$80 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_vbuc1 + //SEG163 [85] (byte/signed word/word/dword/signed dword~) render_logo::$80 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_vbuc1 lax logo_idx_11 axs #-[$28*1] stx _80 - //SEG163 [85] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$80 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG164 [86] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$80 -- pbuc1_derefidx_vbuz1=vbuz2 lda _80 ldy screen_idx_21 sta SCREEN+$28*1,y jmp b24_2 - //SEG164 render_logo::@24_2 + //SEG165 render_logo::@24_2 b24_2: - //SEG165 [86] (byte/signed word/word/dword/signed dword~) render_logo::$84 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_plus_vbuc1 + //SEG166 [87] (byte/signed word/word/dword/signed dword~) render_logo::$84 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_plus_vbuc1 lax logo_idx_11 axs #-[$28*2] stx _84 - //SEG166 [87] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$84 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG167 [88] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$84 -- pbuc1_derefidx_vbuz1=vbuz2 lda _84 ldy screen_idx_21 sta SCREEN+$28*2,y jmp b24_3 - //SEG167 render_logo::@24_3 + //SEG168 render_logo::@24_3 b24_3: - //SEG168 [88] (byte/signed word/word/dword/signed dword~) render_logo::$88 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 + //SEG169 [89] (byte/signed word/word/dword/signed dword~) render_logo::$88 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_plus_vbuc1 lax logo_idx_11 axs #-[$28*3] stx _88 - //SEG169 [89] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$88 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG170 [90] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$88 -- pbuc1_derefidx_vbuz1=vbuz2 lda _88 ldy screen_idx_21 sta SCREEN+$28*3,y jmp b24_4 - //SEG170 render_logo::@24_4 + //SEG171 render_logo::@24_4 b24_4: - //SEG171 [90] (byte/signed word/word/dword/signed dword~) render_logo::$92 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_plus_vbuc1 + //SEG172 [91] (byte/signed word/word/dword/signed dword~) render_logo::$92 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_plus_vbuc1 lax logo_idx_11 axs #-[$28*4] stx _92 - //SEG172 [91] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$92 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG173 [92] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$92 -- pbuc1_derefidx_vbuz1=vbuz2 lda _92 ldy screen_idx_21 sta SCREEN+$28*4,y jmp b24_5 - //SEG173 render_logo::@24_5 + //SEG174 render_logo::@24_5 b24_5: - //SEG174 [92] (byte/signed word/word/dword/signed dword~) render_logo::$96 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuz1=vbuz2_plus_vbuc1 + //SEG175 [93] (byte/signed word/word/dword/signed dword~) render_logo::$96 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuz1=vbuz2_plus_vbuc1 lax logo_idx_11 axs #-[$28*5] stx _96 - //SEG175 [93] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$96 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG176 [94] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$96 -- pbuc1_derefidx_vbuz1=vbuz2 lda _96 ldy screen_idx_21 sta SCREEN+$28*5,y jmp b10 - //SEG176 render_logo::@10 + //SEG177 render_logo::@10 b10: - //SEG177 [94] (byte) render_logo::screen_idx#5 ← ++ (byte) render_logo::screen_idx#21 -- vbuz1=_inc_vbuz1 + //SEG178 [95] (byte) render_logo::screen_idx#5 ← ++ (byte) render_logo::screen_idx#21 -- vbuz1=_inc_vbuz1 inc screen_idx_5 - //SEG178 [95] (byte) render_logo::logo_idx#4 ← ++ (byte) render_logo::logo_idx#11 -- vbuz1=_inc_vbuz1 + //SEG179 [96] (byte) render_logo::logo_idx#4 ← ++ (byte) render_logo::logo_idx#11 -- vbuz1=_inc_vbuz1 inc logo_idx_4 - //SEG179 [72] phi from render_logo::@10 to render_logo::@8 [phi:render_logo::@10->render_logo::@8] + //SEG180 [73] phi from render_logo::@10 to render_logo::@8 [phi:render_logo::@10->render_logo::@8] b8_from_b10: - //SEG180 [72] phi (byte) render_logo::screen_idx#21 = (byte) render_logo::screen_idx#5 [phi:render_logo::@10->render_logo::@8#0] -- register_copy - //SEG181 [72] phi (byte) render_logo::logo_idx#11 = (byte) render_logo::logo_idx#4 [phi:render_logo::@10->render_logo::@8#1] -- register_copy + //SEG181 [73] phi (byte) render_logo::screen_idx#21 = (byte) render_logo::screen_idx#5 [phi:render_logo::@10->render_logo::@8#0] -- register_copy + //SEG182 [73] phi (byte) render_logo::logo_idx#11 = (byte) render_logo::logo_idx#4 [phi:render_logo::@10->render_logo::@8#1] -- register_copy jmp b8 } -//SEG182 sin16s_gen2 +//SEG183 sin16s_gen2 // Generate signed word sinus table - with values in the range min-max. // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -4253,18 +4264,18 @@ sin16s_gen2: { .const min = -$140 .const max = $140 .label ampl = max-min - .label _5 = $5e - .label _6 = $62 - .label _8 = $64 - .label step = $52 + .label _5 = $60 + .label _6 = $64 + .label _8 = $66 + .label step = $54 .label sintab = $d .label x = 9 .label i = $f - //SEG183 [97] call div32u16u - //SEG184 [187] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG184 [98] call div32u16u + //SEG185 [188] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] div32u16u_from_sin16s_gen2: jsr div32u16u - //SEG185 [98] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 -- vduz1=vduz2 + //SEG186 [99] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 -- vduz1=vduz2 lda div32u16u.return sta div32u16u.return_2 lda div32u16u.return+1 @@ -4274,9 +4285,9 @@ sin16s_gen2: { lda div32u16u.return+3 sta div32u16u.return_2+3 jmp b2 - //SEG186 sin16s_gen2::@2 + //SEG187 sin16s_gen2::@2 b2: - //SEG187 [99] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 -- vduz1=vduz2 + //SEG188 [100] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 -- vduz1=vduz2 lda div32u16u.return_2 sta step lda div32u16u.return_2+1 @@ -4285,19 +4296,19 @@ sin16s_gen2: { sta step+2 lda div32u16u.return_2+3 sta step+3 - //SEG188 [100] phi from sin16s_gen2::@2 to sin16s_gen2::@1 [phi:sin16s_gen2::@2->sin16s_gen2::@1] + //SEG189 [101] phi from sin16s_gen2::@2 to sin16s_gen2::@1 [phi:sin16s_gen2::@2->sin16s_gen2::@1] b1_from_b2: - //SEG189 [100] phi (word) sin16s_gen2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#0] -- vwuz1=vbuc1 + //SEG190 [101] phi (word) sin16s_gen2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#0] -- vwuz1=vbuc1 lda #0 sta i lda #0 sta i+1 - //SEG190 [100] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[XSIN_SIZE#0]) xsin#0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#1] -- pwsz1=pwsc1 + //SEG191 [101] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[XSIN_SIZE#0]) xsin#0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#1] -- pwsz1=pwsc1 lda #xsin sta sintab+1 - //SEG191 [100] phi (dword) sin16s_gen2::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#2] -- vduz1=vbuc1 + //SEG192 [101] phi (dword) sin16s_gen2::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -4306,15 +4317,15 @@ sin16s_gen2: { sta x+3 jmp b1 // u[4.28] - //SEG192 [100] phi from sin16s_gen2::@4 to sin16s_gen2::@1 [phi:sin16s_gen2::@4->sin16s_gen2::@1] + //SEG193 [101] phi from sin16s_gen2::@4 to sin16s_gen2::@1 [phi:sin16s_gen2::@4->sin16s_gen2::@1] b1_from_b4: - //SEG193 [100] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#0] -- register_copy - //SEG194 [100] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@4->sin16s_gen2::@1#1] -- register_copy - //SEG195 [100] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#2] -- register_copy + //SEG194 [101] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#0] -- register_copy + //SEG195 [101] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@4->sin16s_gen2::@1#1] -- register_copy + //SEG196 [101] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#2] -- register_copy jmp b1 - //SEG196 sin16s_gen2::@1 + //SEG197 sin16s_gen2::@1 b1: - //SEG197 [101] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 + //SEG198 [102] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -4323,24 +4334,24 @@ sin16s_gen2: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG198 [102] call sin16s + //SEG199 [103] call sin16s jsr sin16s - //SEG199 [103] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 -- vwsz1=vwsz2 + //SEG200 [104] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 -- vwsz1=vwsz2 lda sin16s.return_1 sta sin16s.return lda sin16s.return_1+1 sta sin16s.return+1 jmp b3 - //SEG200 sin16s_gen2::@3 + //SEG201 sin16s_gen2::@3 b3: - //SEG201 [104] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 -- vwsz1=vwsz2 + //SEG202 [105] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 -- vwsz1=vwsz2 lda sin16s.return sta mul16s.a lda sin16s.return+1 sta mul16s.a+1 - //SEG202 [105] call mul16s + //SEG203 [106] call mul16s jsr mul16s - //SEG203 [106] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 -- vdsz1=vdsz2 + //SEG204 [107] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 -- vdsz1=vdsz2 lda mul16s.return sta mul16s.return_2 lda mul16s.return+1 @@ -4350,9 +4361,9 @@ sin16s_gen2: { lda mul16s.return+3 sta mul16s.return_2+3 jmp b4 - //SEG204 sin16s_gen2::@4 + //SEG205 sin16s_gen2::@4 b4: - //SEG205 [107] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 -- vdsz1=vdsz2 + //SEG206 [108] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 -- vdsz1=vdsz2 lda mul16s.return_2 sta _5 lda mul16s.return_2+1 @@ -4361,32 +4372,32 @@ sin16s_gen2: { sta _5+2 lda mul16s.return_2+3 sta _5+3 - //SEG206 [108] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 + //SEG207 [109] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 lda _5+2 sta _6 lda _5+3 sta _6+1 - //SEG207 [109] (signed word~) sin16s_gen2::$8 ← (signed word)(word~) sin16s_gen2::$6 -- vwsz1=vwsz2 + //SEG208 [110] (signed word~) sin16s_gen2::$8 ← (signed word)(word~) sin16s_gen2::$6 -- vwsz1=vwsz2 lda _6 sta _8 lda _6+1 sta _8+1 - //SEG208 [110] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 + //SEG209 [111] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 ldy #0 lda _8 sta (sintab),y iny lda _8+1 sta (sintab),y - //SEG209 [111] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 - lda sintab + //SEG210 [112] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + lda #SIZEOF_SIGNED_WORD clc - adc #2 + adc sintab sta sintab bcc !+ inc sintab+1 !: - //SEG210 [112] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG211 [113] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -4400,12 +4411,12 @@ sin16s_gen2: { lda x+3 adc step+3 sta x+3 - //SEG211 [113] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 + //SEG212 [114] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG212 [114] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG213 [115] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>XSIN_SIZE bcc b1_from_b4 @@ -4415,38 +4426,38 @@ sin16s_gen2: { bcc b1_from_b4 !: jmp breturn - //SEG213 sin16s_gen2::@return + //SEG214 sin16s_gen2::@return breturn: - //SEG214 [115] return + //SEG215 [116] return rts } -//SEG215 mul16s +//SEG216 mul16s // Multiply of two signed words to a signed double word // Fixes offsets introduced by using unsigned multiplication -// mul16s(signed word zeropage($58) a) +// mul16s(signed word zeropage($5a) a) mul16s: { - .label _9 = $6a - .label _16 = $6c + .label _9 = $6c + .label _16 = $6e .label m = $11 - .label return = $6e - .label a = $58 - .label return_2 = $5a - //SEG216 [116] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + .label return = $70 + .label a = $5a + .label return_2 = $5c + //SEG217 [117] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG217 [117] call mul16u - //SEG218 [127] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG218 [118] call mul16u + //SEG219 [128] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //SEG219 [127] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy - //SEG220 [127] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 + //SEG220 [128] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG221 [128] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl sta mul16u.b+1 jsr mul16u - //SEG221 [118] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG222 [119] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return lda mul16u.res+1 @@ -4456,9 +4467,9 @@ mul16s: { lda mul16u.res+3 sta mul16u.return+3 jmp b4 - //SEG222 mul16s::@4 + //SEG223 mul16s::@4 b4: - //SEG223 [119] (dword) mul16s::m#0 ← (dword) mul16u::return#2 -- vduz1=vduz2 + //SEG224 [120] (dword) mul16s::m#0 ← (dword) mul16u::return#2 -- vduz1=vduz2 lda mul16u.return sta m lda mul16u.return+1 @@ -4467,18 +4478,18 @@ mul16s: { sta m+2 lda mul16u.return+3 sta m+3 - //SEG224 [120] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + //SEG225 [121] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b1_from_b4 jmp b3 - //SEG225 mul16s::@3 + //SEG226 mul16s::@3 b3: - //SEG226 [121] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG227 [122] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _9 lda m+3 sta _9+1 - //SEG227 [122] (word~) mul16s::$16 ← (word~) mul16s::$9 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz2_minus_vwuc1 + //SEG228 [123] (word~) mul16s::$16 ← (word~) mul16s::$9 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz2_minus_vwuc1 lda _9 sec sbc #sin16s_gen2.ampl sta _16+1 - //SEG228 [123] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG229 [124] (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 - //SEG229 [124] phi from mul16s::@3 mul16s::@4 to mul16s::@1 [phi:mul16s::@3/mul16s::@4->mul16s::@1] + //SEG230 [125] phi from mul16s::@3 mul16s::@4 to mul16s::@1 [phi:mul16s::@3/mul16s::@4->mul16s::@1] b1_from_b3: b1_from_b4: - //SEG230 [124] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@4->mul16s::@1#0] -- register_copy + //SEG231 [125] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@4->mul16s::@1#0] -- register_copy jmp b1 - //SEG231 mul16s::@1 + //SEG232 mul16s::@1 b1: jmp b2 - //SEG232 mul16s::@2 + //SEG233 mul16s::@2 b2: - //SEG233 [125] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz2 + //SEG234 [126] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz2 lda m sta return lda m+1 @@ -4511,23 +4522,23 @@ mul16s: { lda m+3 sta return+3 jmp breturn - //SEG234 mul16s::@return + //SEG235 mul16s::@return breturn: - //SEG235 [126] return + //SEG236 [127] return rts } -//SEG236 mul16u +//SEG237 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage($17) a, word zeropage($15) b) mul16u: { - .label _1 = $72 + .label _1 = $74 .label mb = $1d .label a = $17 .label res = $19 - .label return = $66 + .label return = $68 .label b = $15 - .label return_3 = $93 - //SEG237 [128] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + .label return_3 = $95 + //SEG238 [129] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -4535,44 +4546,44 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG238 [129] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG239 [130] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG239 [129] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG240 [129] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG240 [130] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG241 [130] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 lda #0 sta res lda #0 sta res+1 sta res+2 sta res+3 - //SEG241 [129] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG242 [130] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG242 mul16u::@1 + //SEG243 mul16u::@1 b1: - //SEG243 [130] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG244 [131] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 jmp breturn - //SEG244 mul16u::@return + //SEG245 mul16u::@return breturn: - //SEG245 [131] return + //SEG246 [132] return rts - //SEG246 mul16u::@2 + //SEG247 mul16u::@2 b2: - //SEG247 [132] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vwuz2_band_vbuc1 + //SEG248 [133] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vwuz2_band_vbuc1 lda a and #1 sta _1 - //SEG248 [133] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@3 -- vbuz1_eq_0_then_la1 + //SEG249 [134] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@3 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b3_from_b2 jmp b4 - //SEG249 mul16u::@4 + //SEG250 mul16u::@4 b4: - //SEG250 [134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG251 [135] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -4586,52 +4597,52 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG251 [135] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] + //SEG252 [136] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] b3_from_b2: b3_from_b4: - //SEG252 [135] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy + //SEG253 [136] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy jmp b3 - //SEG253 mul16u::@3 + //SEG254 mul16u::@3 b3: - //SEG254 [136] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG255 [137] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG255 [137] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG256 [138] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG256 [129] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] + //SEG257 [130] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] b1_from_b3: - //SEG257 [129] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy - //SEG258 [129] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy - //SEG259 [129] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy + //SEG258 [130] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy + //SEG259 [130] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy + //SEG260 [130] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy jmp b1 } -//SEG260 sin16s +//SEG261 sin16s // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff // sin16s(dword zeropage($22) x) sin16s: { - .label _4 = $73 + .label _4 = $75 .label x = $22 - .label return = $56 - .label x1 = $77 - .label x2 = $7b - .label x3 = $7f - .label x3_6 = $83 - .label usinx = $85 - .label x4 = $89 - .label x5 = $8d - .label x5_128 = $8f - .label usinx_1 = $91 + .label return = $58 + .label x1 = $79 + .label x2 = $7d + .label x3 = $81 + .label x3_6 = $85 + .label usinx = $87 + .label x4 = $8b + .label x5 = $8f + .label x5_128 = $91 + .label usinx_1 = $93 .label return_1 = $26 .label sinx = $26 .label isUpper = $21 .label return_5 = $26 - //SEG261 [138] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG262 [139] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_u4f28>>$10 bcc b1_from_sin16s @@ -4649,9 +4660,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG262 sin16s::@4 + //SEG263 sin16s::@4 b4: - //SEG263 [139] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG264 [140] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 lda x sec sbc #PI_u4f28>>$10 sta x+3 - //SEG264 [140] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG265 [141] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //SEG265 [140] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG266 [141] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG266 [140] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG267 [141] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG267 [140] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG268 [141] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG268 [140] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG269 [141] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG269 [140] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG270 [141] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG270 sin16s::@1 + //SEG271 sin16s::@1 b1: - //SEG271 [141] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG272 [142] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_HALF_u4f28>>$10 bcc b2_from_b1 @@ -4699,9 +4710,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG272 sin16s::@5 + //SEG273 sin16s::@5 b5: - //SEG273 [142] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG274 [143] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 lda #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG274 [143] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG275 [144] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG275 [143] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG276 [144] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG276 sin16s::@2 + //SEG277 sin16s::@2 b2: - //SEG277 [144] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz2_rol_3 + //SEG278 [145] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz2_rol_3 lda x sta _4 lda x+1 @@ -4739,107 +4750,107 @@ sin16s: { rol _4+3 dey bne !- - //SEG278 [145] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 + //SEG279 [146] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 lda _4+2 sta x1 lda _4+3 sta x1+1 - //SEG279 [146] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG280 [147] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG280 [147] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG281 [148] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG281 [148] call mulu16_sel - //SEG282 [178] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG282 [149] call mulu16_sel + //SEG283 [179] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG283 [178] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG284 [179] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG284 [178] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG285 [178] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG285 [179] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG286 [179] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG286 [149] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG287 [150] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return lda mulu16_sel.return_12+1 sta mulu16_sel.return+1 jmp b7 - //SEG287 sin16s::@7 + //SEG288 sin16s::@7 b7: - //SEG288 [150] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG289 [151] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 lda mulu16_sel.return sta x2 lda mulu16_sel.return+1 sta x2+1 - //SEG289 [151] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 -- vwuz1=vwuz2 + //SEG290 [152] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 -- vwuz1=vwuz2 lda x2 sta mulu16_sel.v1 lda x2+1 sta mulu16_sel.v1+1 - //SEG290 [152] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG291 [153] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG291 [153] call mulu16_sel - //SEG292 [178] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] + //SEG292 [154] call mulu16_sel + //SEG293 [179] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] mulu16_sel_from_b7: - //SEG293 [178] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG294 [179] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu16_sel.select - //SEG294 [178] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy - //SEG295 [178] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy + //SEG295 [179] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy + //SEG296 [179] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG296 [154] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG297 [155] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return_1 lda mulu16_sel.return_12+1 sta mulu16_sel.return_1+1 jmp b8 - //SEG297 sin16s::@8 + //SEG298 sin16s::@8 b8: - //SEG298 [155] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 -- vwuz1=vwuz2 + //SEG299 [156] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 -- vwuz1=vwuz2 lda mulu16_sel.return_1 sta x3 lda mulu16_sel.return_1+1 sta x3+1 - //SEG299 [156] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG300 [157] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 lda x3 sta mulu16_sel.v1 lda x3+1 sta mulu16_sel.v1+1 - //SEG300 [157] call mulu16_sel - //SEG301 [178] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG301 [158] call mulu16_sel + //SEG302 [179] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG302 [178] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG303 [179] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu16_sel.select - //SEG303 [178] phi (word) mulu16_sel::v2#5 = (dword/signed dword) $10000/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG304 [179] phi (word) mulu16_sel::v2#5 = (dword/signed dword) $10000/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG304 [178] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG305 [179] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG305 [158] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG306 [159] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return_2 lda mulu16_sel.return_12+1 sta mulu16_sel.return_2+1 jmp b9 - //SEG306 sin16s::@9 + //SEG307 sin16s::@9 b9: - //SEG307 [159] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 -- vwuz1=vwuz2 + //SEG308 [160] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 -- vwuz1=vwuz2 lda mulu16_sel.return_2 sta x3_6 lda mulu16_sel.return_2+1 sta x3_6+1 - //SEG308 [160] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG309 [161] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -4847,71 +4858,71 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG309 [161] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG310 [162] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 lda x3 sta mulu16_sel.v1 lda x3+1 sta mulu16_sel.v1+1 - //SEG310 [162] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG311 [163] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG311 [163] call mulu16_sel - //SEG312 [178] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG312 [164] call mulu16_sel + //SEG313 [179] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG313 [178] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG314 [179] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG314 [178] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy - //SEG315 [178] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG315 [179] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy + //SEG316 [179] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG316 [164] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG317 [165] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return_10 lda mulu16_sel.return_12+1 sta mulu16_sel.return_10+1 jmp b10 - //SEG317 sin16s::@10 + //SEG318 sin16s::@10 b10: - //SEG318 [165] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 -- vwuz1=vwuz2 + //SEG319 [166] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 -- vwuz1=vwuz2 lda mulu16_sel.return_10 sta x4 lda mulu16_sel.return_10+1 sta x4+1 - //SEG319 [166] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 -- vwuz1=vwuz2 + //SEG320 [167] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 -- vwuz1=vwuz2 lda x4 sta mulu16_sel.v1 lda x4+1 sta mulu16_sel.v1+1 - //SEG320 [167] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG321 [168] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG321 [168] call mulu16_sel - //SEG322 [178] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG322 [169] call mulu16_sel + //SEG323 [179] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG323 [178] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG324 [179] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG324 [178] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG325 [178] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG325 [179] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG326 [179] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG326 [169] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG327 [170] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return_11 lda mulu16_sel.return_12+1 sta mulu16_sel.return_11+1 jmp b11 - //SEG327 sin16s::@11 + //SEG328 sin16s::@11 b11: - //SEG328 [170] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 -- vwuz1=vwuz2 + //SEG329 [171] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 -- vwuz1=vwuz2 lda mulu16_sel.return_11 sta x5 lda mulu16_sel.return_11+1 sta x5+1 - //SEG329 [171] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz2_ror_4 + //SEG330 [172] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz2_ror_4 lda x5+1 sta x5_128+1 lda x5 @@ -4922,7 +4933,7 @@ sin16s: { ror x5_128 dey bne !- - //SEG330 [172] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 + //SEG331 [173] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 lda usinx clc adc x5_128 @@ -4930,14 +4941,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx_1+1 - //SEG331 [173] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 + //SEG332 [174] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b12 jmp b6 - //SEG332 sin16s::@6 + //SEG333 sin16s::@6 b6: - //SEG333 [174] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 + //SEG334 [175] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 sec lda usinx_1 eor #$ff @@ -4947,60 +4958,60 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG334 [175] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] + //SEG335 [176] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] b3_from_b12: b3_from_b6: - //SEG335 [175] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG336 [176] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG336 sin16s::@3 + //SEG337 sin16s::@3 b3: jmp breturn - //SEG337 sin16s::@return + //SEG338 sin16s::@return breturn: - //SEG338 [176] return + //SEG339 [177] return rts - //SEG339 sin16s::@12 + //SEG340 sin16s::@12 b12: - //SEG340 [177] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2 + //SEG341 [178] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2 lda usinx_1 sta return_5 lda usinx_1+1 sta return_5+1 jmp b3_from_b12 } -//SEG341 mulu16_sel +//SEG342 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip // mulu16_sel(word zeropage($28) v1, word zeropage($2a) v2, byte zeropage($2c) select) mulu16_sel: { - .label _0 = $97 - .label _1 = $9b + .label _0 = $99 + .label _1 = $9d .label v1 = $28 .label v2 = $2a - .label return = $79 - .label return_1 = $7d - .label return_2 = $81 - .label return_10 = $87 - .label return_11 = $8b + .label return = $7b + .label return_1 = $7f + .label return_2 = $83 + .label return_10 = $89 + .label return_11 = $8d .label select = $2c - .label return_12 = $9f - //SEG342 [179] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + .label return_12 = $a1 + //SEG343 [180] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG343 [180] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 + //SEG344 [181] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 lda v2 sta mul16u.b lda v2+1 sta mul16u.b+1 - //SEG344 [181] call mul16u - //SEG345 [127] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG345 [182] call mul16u + //SEG346 [128] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] mul16u_from_mulu16_sel: - //SEG346 [127] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy - //SEG347 [127] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy + //SEG347 [128] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG348 [128] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - //SEG348 [182] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG349 [183] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return_3 lda mul16u.res+1 @@ -5010,9 +5021,9 @@ mulu16_sel: { lda mul16u.res+3 sta mul16u.return_3+3 jmp b1 - //SEG349 mulu16_sel::@1 + //SEG350 mulu16_sel::@1 b1: - //SEG350 [183] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 -- vduz1=vduz2 + //SEG351 [184] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 -- vduz1=vduz2 lda mul16u.return_3 sta _0 lda mul16u.return_3+1 @@ -5021,7 +5032,7 @@ mulu16_sel: { sta _0+2 lda mul16u.return_3+3 sta _0+3 - //SEG351 [184] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3 + //SEG352 [185] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3 lda _0 sta _1 lda _0+1 @@ -5040,81 +5051,81 @@ mulu16_sel: { dex bne !- !e: - //SEG352 [185] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG353 [186] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return_12 lda _1+3 sta return_12+1 jmp breturn - //SEG353 mulu16_sel::@return + //SEG354 mulu16_sel::@return breturn: - //SEG354 [186] return + //SEG355 [187] return rts } -//SEG355 div32u16u +//SEG356 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { - .label quotient_hi = $a3 - .label quotient_lo = $a7 - .label return = $a9 - .label return_2 = $4e - //SEG356 [188] call divr16u - //SEG357 [197] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + .label quotient_hi = $a5 + .label quotient_lo = $a9 + .label return = $ab + .label return_2 = $50 + //SEG357 [189] call divr16u + //SEG358 [198] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG358 [197] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG359 [198] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta divr16u.dividend lda #>PI2_u4f28>>$10 sta divr16u.dividend+1 - //SEG359 [197] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG360 [198] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 lda #0 sta divr16u.rem lda #0 sta divr16u.rem+1 jsr divr16u - //SEG360 [189] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG361 [190] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_2 lda divr16u.return+1 sta divr16u.return_2+1 jmp b1 - //SEG361 div32u16u::@1 + //SEG362 div32u16u::@1 b1: - //SEG362 [190] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG363 [191] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return_2 sta quotient_hi lda divr16u.return_2+1 sta quotient_hi+1 - //SEG363 [191] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG364 [192] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta divr16u.rem lda rem16u+1 sta divr16u.rem+1 - //SEG364 [192] call divr16u - //SEG365 [197] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] + //SEG365 [193] call divr16u + //SEG366 [198] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] divr16u_from_b1: - //SEG366 [197] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 + //SEG367 [198] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG367 [197] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy + //SEG368 [198] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy jsr divr16u - //SEG368 [193] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG369 [194] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_3 lda divr16u.return+1 sta divr16u.return_3+1 jmp b2 - //SEG369 div32u16u::@2 + //SEG370 div32u16u::@2 b2: - //SEG370 [194] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 + //SEG371 [195] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 lda divr16u.return_3 sta quotient_lo lda divr16u.return_3+1 sta quotient_lo+1 - //SEG371 [195] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG372 [196] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 lda quotient_hi sta return+2 lda quotient_hi+1 @@ -5124,84 +5135,84 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG372 div32u16u::@return + //SEG373 div32u16u::@return breturn: - //SEG373 [196] return + //SEG374 [197] return rts } -//SEG374 divr16u +//SEG375 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u // Implemented using simple binary division // divr16u(word zeropage($2f) dividend, word zeropage($2d) rem) divr16u: { - .label _1 = $ad - .label _2 = $ae + .label _1 = $af + .label _2 = $b0 .label rem = $2d .label dividend = $2f .label quotient = $31 .label i = $33 .label return = $31 - .label return_2 = $a1 - .label return_3 = $a5 - //SEG375 [198] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + .label return_2 = $a3 + .label return_3 = $a7 + //SEG376 [199] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG376 [198] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG377 [199] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG377 [198] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG378 [199] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #0 sta quotient lda #0 sta quotient+1 - //SEG378 [198] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG379 [198] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG379 [199] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG380 [199] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG380 [198] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG381 [199] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG381 [198] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG382 [198] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG383 [198] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG384 [198] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG382 [199] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG383 [199] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG384 [199] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG385 [199] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG385 divr16u::@1 + //SEG386 divr16u::@1 b1: - //SEG386 [199] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG387 [200] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG387 [200] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 + //SEG388 [201] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG388 [201] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 -- vbuz1=vbuz2_band_vbuc1 + //SEG389 [202] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _1 sta _2 - //SEG389 [202] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG390 [203] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 lda _2 cmp #0 beq b2_from_b1 jmp b4 - //SEG390 divr16u::@4 + //SEG391 divr16u::@4 b4: - //SEG391 [203] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG392 [204] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG392 [204] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG393 [205] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG393 [204] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG394 [205] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG394 divr16u::@2 + //SEG395 divr16u::@2 b2: - //SEG395 [205] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG396 [206] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG396 [206] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG397 [207] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG397 [207] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG398 [208] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>XSIN_SIZE bcc b3_from_b2 @@ -5211,14 +5222,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG398 divr16u::@5 + //SEG399 divr16u::@5 b5: - //SEG399 [208] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG400 [209] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG400 [209] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG401 [210] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #XSIN_SIZE sta rem+1 - //SEG401 [210] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG402 [211] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG402 [210] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG403 [210] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG403 [211] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG404 [211] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG404 divr16u::@3 + //SEG405 divr16u::@3 b3: - //SEG405 [211] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG406 [212] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG406 [212] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG407 [213] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$10 cmp i bne b1_from_b3 jmp b6 - //SEG407 divr16u::@6 + //SEG408 divr16u::@6 b6: - //SEG408 [213] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 + //SEG409 [214] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 lda rem sta rem16u lda rem+1 sta rem16u+1 jmp breturn - //SEG409 divr16u::@return + //SEG410 divr16u::@return breturn: - //SEG410 [214] return + //SEG411 [215] return rts } -//SEG411 fill +//SEG412 fill // Fill some memory with a value // fill(byte zeropage($34) val) fill: { - .label end = $b1 + .label end = $b3 .label addr = $35 .label val = $34 - //SEG412 [216] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) $3e8 -- pbuz1=pbuz2_plus_vwuc1 + //SEG413 [217] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) $3e8 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -5269,23 +5280,23 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG413 [217] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG414 [218] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] b1_from_fill: b1_from_b1: - //SEG414 [217] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG415 [218] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG415 fill::@1 + //SEG416 fill::@1 b1: - //SEG416 [218] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuz2 + //SEG417 [219] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuz2 lda val ldy #0 sta (addr),y - //SEG417 [219] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG418 [220] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG418 [220] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG419 [221] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 lda addr+1 cmp end+1 bne b1_from_b1 @@ -5293,9 +5304,9 @@ fill: { cmp end bne b1_from_b1 jmp breturn - //SEG419 fill::@return + //SEG420 fill::@return breturn: - //SEG420 [221] return + //SEG421 [222] return rts } .align $100 @@ -5316,113 +5327,113 @@ Statement [9] *((const byte*) BGCOL3#0) ← (const byte) BLACK#0 [ ] ( main:3 [ Statement [11] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:3 [ ] ) always clobbers reg byte a Statement [12] *((const byte*) D016#0) ← (const byte) VIC_MCM#0 [ ] ( main:3 [ ] ) always clobbers reg byte a Statement [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto loop::@2 [ xsin_idx#11 ] ( main:3::loop:23 [ xsin_idx#11 ] ) always clobbers reg byte a -Statement [29] (signed word*~) loop::$1 ← (const signed word[XSIN_SIZE#0]) xsin#0 + (word) xsin_idx#11 [ xsin_idx#11 loop::$1 ] ( main:3::loop:23 [ xsin_idx#11 loop::$1 ] ) always clobbers reg byte a -Statement [30] (signed word) loop::xpos#0 ← *((signed word*~) loop::$1) [ xsin_idx#11 loop::xpos#0 ] ( main:3::loop:23 [ xsin_idx#11 loop::xpos#0 ] ) always clobbers reg byte a reg byte y -Statement [31] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 [ xsin_idx#11 render_logo::xpos#0 ] ( main:3::loop:23 [ xsin_idx#11 render_logo::xpos#0 ] ) always clobbers reg byte a -Statement [33] (word) xsin_idx#3 ← (word) xsin_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ xsin_idx#3 ] ( main:3::loop:23 [ xsin_idx#3 ] ) always clobbers reg byte a -Statement [34] if((word) xsin_idx#3!=(const word) XSIN_SIZE#0*(byte/signed byte/word/signed word/dword/signed dword) 2) goto loop::@6 [ xsin_idx#3 ] ( main:3::loop:23 [ xsin_idx#3 ] ) always clobbers reg byte a -Statement [38] (byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos#0 [ render_logo::xpos#0 render_logo::$0 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::xpos#0 render_logo::$0 ] ) always clobbers reg byte a -Statement [40] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1 [ render_logo::xpos#0 render_logo::$2 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::xpos#0 render_logo::$2 ] ) always clobbers reg byte a -Statement [42] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ render_logo::xpos#0 render_logo::$3 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::xpos#0 render_logo::$3 ] ) always clobbers reg byte a -Statement [43] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3 [ render_logo::xpos#0 render_logo::x_char#0 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::xpos#0 render_logo::x_char#0 ] ) always clobbers reg byte a -Statement [44] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 [ render_logo::x_char#0 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::x_char#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:66 [ render_logo::x_char#0 ] -Statement [63] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a +Statement [29] (word) loop::$5 ← (word) xsin_idx#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ xsin_idx#11 loop::$5 ] ( main:3::loop:23 [ xsin_idx#11 loop::$5 ] ) always clobbers reg byte a +Statement [30] (signed word*~) loop::$1 ← (const signed word[XSIN_SIZE#0]) xsin#0 + (word) loop::$5 [ xsin_idx#11 loop::$1 ] ( main:3::loop:23 [ xsin_idx#11 loop::$1 ] ) always clobbers reg byte a +Statement [31] (signed word) loop::xpos#0 ← *((signed word*~) loop::$1) [ xsin_idx#11 loop::xpos#0 ] ( main:3::loop:23 [ xsin_idx#11 loop::xpos#0 ] ) always clobbers reg byte a reg byte y +Statement [32] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 [ xsin_idx#11 render_logo::xpos#0 ] ( main:3::loop:23 [ xsin_idx#11 render_logo::xpos#0 ] ) always clobbers reg byte a +Statement [35] if((word) xsin_idx#3!=(const word) XSIN_SIZE#0) goto loop::@6 [ xsin_idx#3 ] ( main:3::loop:23 [ xsin_idx#3 ] ) always clobbers reg byte a +Statement [39] (byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos#0 [ render_logo::xpos#0 render_logo::$0 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::$0 ] ) always clobbers reg byte a +Statement [41] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1 [ render_logo::xpos#0 render_logo::$2 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::$2 ] ) always clobbers reg byte a +Statement [43] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ render_logo::xpos#0 render_logo::$3 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::$3 ] ) always clobbers reg byte a +Statement [44] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3 [ render_logo::xpos#0 render_logo::x_char#0 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::x_char#0 ] ) always clobbers reg byte a +Statement [45] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 [ render_logo::x_char#0 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:68 [ render_logo::x_char#0 ] +Statement [64] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ render_logo::screen_idx#10 render_logo::screen_idx#4 render_logo::screen_idx#18 render_logo::screen_idx#3 ] -Statement [64] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a -Statement [65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a -Statement [66] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a -Statement [67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a -Statement [68] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a -Statement [70] (signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#0 [ render_logo::$17 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::$17 ] ) always clobbers reg byte a -Statement [76] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a +Statement [65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a +Statement [66] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a +Statement [67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a +Statement [68] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a +Statement [69] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a +Statement [71] (signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#0 [ render_logo::$17 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::$17 ] ) always clobbers reg byte a +Statement [77] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ render_logo::screen_idx#15 render_logo::screen_idx#21 render_logo::screen_idx#5 render_logo::screen_idx#6 ] -Statement [77] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a -Statement [78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a -Statement [79] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a -Statement [80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a -Statement [81] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a -Statement [98] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:3::sin16s_gen2:21 [ div32u16u::return#2 ] ) always clobbers reg byte a -Statement [99] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 ] ) always clobbers reg byte a -Statement [101] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [103] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#0 ] ) always clobbers reg byte a -Statement [104] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 ] ) always clobbers reg byte a -Statement [106] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#2 ] ) always clobbers reg byte a -Statement [107] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$5 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$5 ] ) always clobbers reg byte a -Statement [108] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$6 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$6 ] ) always clobbers reg byte a -Statement [109] (signed word~) sin16s_gen2::$8 ← (signed word)(word~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$8 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$8 ] ) always clobbers reg byte a -Statement [110] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ) always clobbers reg byte a reg byte y -Statement [111] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::i#2 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::i#2 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [112] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [114] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] ) always clobbers reg byte a -Statement [116] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16u::a#8 ] ( main:3::sin16s_gen2:21::mul16s:105 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#8 ] ) always clobbers reg byte a -Statement [118] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:3::sin16s_gen2:21::mul16s:105 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::return#2 ] ) always clobbers reg byte a -Statement [119] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:105 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [120] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:105 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 ] ) always clobbers reg byte a -Statement [121] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$9 ] ( main:3::sin16s_gen2:21::mul16s:105 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a -Statement [122] (word~) mul16s::$16 ← (word~) mul16s::$9 - ((word))(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:105 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [123] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:105 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#1 ] ) always clobbers reg byte a -Statement [125] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:105 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] ) always clobbers reg byte a -Statement [128] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:105::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a +Statement [78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a +Statement [79] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a +Statement [80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a +Statement [81] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a +Statement [82] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a +Statement [99] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:3::sin16s_gen2:21 [ div32u16u::return#2 ] ) always clobbers reg byte a +Statement [100] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 ] ) always clobbers reg byte a +Statement [102] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a +Statement [104] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#0 ] ) always clobbers reg byte a +Statement [105] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 ] ) always clobbers reg byte a +Statement [107] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#2 ] ) always clobbers reg byte a +Statement [108] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$5 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$5 ] ) always clobbers reg byte a +Statement [109] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$6 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$6 ] ) always clobbers reg byte a +Statement [110] (signed word~) sin16s_gen2::$8 ← (signed word)(word~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$8 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$8 ] ) always clobbers reg byte a +Statement [111] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ) always clobbers reg byte a reg byte y +Statement [112] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::i#2 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::i#2 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a +Statement [113] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a +Statement [115] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] ) always clobbers reg byte a +Statement [117] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16u::a#8 ] ( main:3::sin16s_gen2:21::mul16s:106 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#8 ] ) always clobbers reg byte a +Statement [119] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:3::sin16s_gen2:21::mul16s:106 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::return#2 ] ) always clobbers reg byte a +Statement [120] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:106 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16s::m#0 ] ) always clobbers reg byte a +Statement [121] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:106 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 ] ) always clobbers reg byte a +Statement [122] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$9 ] ( main:3::sin16s_gen2:21::mul16s:106 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a +Statement [123] (word~) mul16s::$16 ← (word~) mul16s::$9 - ((word))(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:106 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a +Statement [124] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:106 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#1 ] ) always clobbers reg byte a +Statement [126] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:106 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] ) always clobbers reg byte a +Statement [129] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:106::mul16u:118 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:149::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:154::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:158::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:164::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:169::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ sin16s::isUpper#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:44 [ mulu16_sel::select#5 ] -Statement [130] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:21::mul16s:105::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [132] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::sin16s_gen2:21::mul16s:105::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::sin16s_gen2:21::mul16s:105::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [138] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [139] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [141] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [142] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [144] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a reg byte y +Statement [131] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:21::mul16s:106::mul16u:118 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:149::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:154::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:158::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:164::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:169::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a +Statement [133] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::sin16s_gen2:21::mul16s:106::mul16u:118 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:149::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:154::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:158::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:164::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:169::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a +Statement [135] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::sin16s_gen2:21::mul16s:106::mul16u:118 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:149::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:154::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:158::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:164::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:169::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [139] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a +Statement [140] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#1 ] ) always clobbers reg byte a +Statement [142] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a +Statement [143] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a +Statement [145] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:33 [ sin16s::isUpper#2 ] -Statement [145] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [146] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a -Statement [147] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a -Statement [149] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [150] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [151] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a -Statement [152] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a -Statement [154] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [155] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [156] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a -Statement [158] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a -Statement [159] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [160] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [161] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a -Statement [162] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a -Statement [164] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [165] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [166] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a -Statement [167] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a -Statement [169] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [170] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [171] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a reg byte y -Statement [172] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [174] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [177] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [179] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [180] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [182] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a -Statement [183] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [184] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [185] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a -Statement [189] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:97 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [190] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:97 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [191] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:97 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [193] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:97 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [194] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:97 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [195] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:97 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [200] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:3::sin16s_gen2:21::div32u16u:97::divr16u:188 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:97::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [146] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a +Statement [147] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a +Statement [148] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a +Statement [150] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a +Statement [151] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a +Statement [152] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a +Statement [153] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a +Statement [155] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a +Statement [156] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a +Statement [157] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a +Statement [159] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a +Statement [160] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a +Statement [161] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a +Statement [162] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a +Statement [163] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a +Statement [165] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a +Statement [166] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a +Statement [167] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a +Statement [168] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a +Statement [170] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a +Statement [171] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a +Statement [172] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a reg byte y +Statement [173] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a +Statement [175] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a +Statement [178] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#5 ] ) always clobbers reg byte a +Statement [180] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:149 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:154 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:158 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:164 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:169 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a +Statement [181] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:149 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:154 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:158 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:164 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:169 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a +Statement [183] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:149 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:154 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:158 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:164 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:169 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a +Statement [184] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:149 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:154 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:158 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:164 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:169 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a +Statement [185] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:149 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:154 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:158 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:164 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:169 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a +Statement [186] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:149 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:154 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:158 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:164 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:169 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a +Statement [190] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a +Statement [191] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a +Statement [192] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a +Statement [194] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a +Statement [195] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a +Statement [196] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::return#0 ] ) always clobbers reg byte a +Statement [201] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:189 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:98::divr16u:193 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ divr16u::i#2 divr16u::i#1 ] -Statement [203] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:21::div32u16u:97::divr16u:188 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:97::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [207] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:21::div32u16u:97::divr16u:188 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:97::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [209] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:21::div32u16u:97::divr16u:188 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:97::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [213] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:97::divr16u:188 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:97::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [216] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) $3e8 [ fill::addr#0 fill::val#3 fill::end#0 ] ( main:3::fill:13 [ fill::addr#0 fill::val#3 fill::end#0 ] main:3::fill:15 [ fill::addr#0 fill::val#3 fill::end#0 ] ) always clobbers reg byte a +Statement [204] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:189 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:98::divr16u:193 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [208] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:189 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:98::divr16u:193 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [210] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:189 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:98::divr16u:193 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [214] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:189 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:98::divr16u:193 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [217] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) $3e8 [ fill::addr#0 fill::val#3 fill::end#0 ] ( main:3::fill:13 [ fill::addr#0 fill::val#3 fill::end#0 ] main:3::fill:15 [ fill::addr#0 fill::val#3 fill::end#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ fill::val#3 ] -Statement [218] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:3::fill:13 [ fill::val#3 fill::end#0 fill::addr#2 ] main:3::fill:15 [ fill::val#3 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y +Statement [219] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:3::fill:13 [ fill::val#3 fill::end#0 fill::addr#2 ] main:3::fill:15 [ fill::val#3 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:52 [ fill::val#3 ] -Statement [220] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:3::fill:13 [ fill::val#3 fill::end#0 fill::addr#1 ] main:3::fill:15 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a +Statement [221] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:3::fill:13 [ fill::val#3 fill::end#0 fill::addr#1 ] main:3::fill:15 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a Statement [6] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( main:3 [ ] ) always clobbers reg byte a Statement [7] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0 [ ] ( main:3 [ ] ) always clobbers reg byte a Statement [8] *((const byte*) BGCOL#0) ← *((const byte*) BGCOL2#0) [ ] ( main:3 [ ] ) always clobbers reg byte a @@ -5430,104 +5441,104 @@ Statement [9] *((const byte*) BGCOL3#0) ← (const byte) BLACK#0 [ ] ( main:3 [ Statement [11] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:3 [ ] ) always clobbers reg byte a Statement [12] *((const byte*) D016#0) ← (const byte) VIC_MCM#0 [ ] ( main:3 [ ] ) always clobbers reg byte a Statement [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto loop::@2 [ xsin_idx#11 ] ( main:3::loop:23 [ xsin_idx#11 ] ) always clobbers reg byte a -Statement [29] (signed word*~) loop::$1 ← (const signed word[XSIN_SIZE#0]) xsin#0 + (word) xsin_idx#11 [ xsin_idx#11 loop::$1 ] ( main:3::loop:23 [ xsin_idx#11 loop::$1 ] ) always clobbers reg byte a -Statement [30] (signed word) loop::xpos#0 ← *((signed word*~) loop::$1) [ xsin_idx#11 loop::xpos#0 ] ( main:3::loop:23 [ xsin_idx#11 loop::xpos#0 ] ) always clobbers reg byte a reg byte y -Statement [31] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 [ xsin_idx#11 render_logo::xpos#0 ] ( main:3::loop:23 [ xsin_idx#11 render_logo::xpos#0 ] ) always clobbers reg byte a -Statement [33] (word) xsin_idx#3 ← (word) xsin_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ xsin_idx#3 ] ( main:3::loop:23 [ xsin_idx#3 ] ) always clobbers reg byte a -Statement [34] if((word) xsin_idx#3!=(const word) XSIN_SIZE#0*(byte/signed byte/word/signed word/dword/signed dword) 2) goto loop::@6 [ xsin_idx#3 ] ( main:3::loop:23 [ xsin_idx#3 ] ) always clobbers reg byte a -Statement [38] (byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos#0 [ render_logo::xpos#0 render_logo::$0 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::xpos#0 render_logo::$0 ] ) always clobbers reg byte a -Statement [40] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1 [ render_logo::xpos#0 render_logo::$2 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::xpos#0 render_logo::$2 ] ) always clobbers reg byte a -Statement [42] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ render_logo::xpos#0 render_logo::$3 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::xpos#0 render_logo::$3 ] ) always clobbers reg byte a -Statement [43] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3 [ render_logo::xpos#0 render_logo::x_char#0 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::xpos#0 render_logo::x_char#0 ] ) always clobbers reg byte a -Statement [44] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 [ render_logo::x_char#0 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::x_char#0 ] ) always clobbers reg byte a -Statement [63] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a -Statement [64] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a -Statement [65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a -Statement [66] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a -Statement [67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a -Statement [68] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a -Statement [70] (signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#0 [ render_logo::$17 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::$17 ] ) always clobbers reg byte a -Statement [76] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a -Statement [77] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a -Statement [78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a -Statement [79] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a -Statement [80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a -Statement [81] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:32 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a -Statement [98] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:3::sin16s_gen2:21 [ div32u16u::return#2 ] ) always clobbers reg byte a -Statement [99] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 ] ) always clobbers reg byte a -Statement [101] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [103] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#0 ] ) always clobbers reg byte a -Statement [104] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 ] ) always clobbers reg byte a -Statement [106] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#2 ] ) always clobbers reg byte a -Statement [107] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$5 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$5 ] ) always clobbers reg byte a -Statement [108] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$6 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$6 ] ) always clobbers reg byte a -Statement [109] (signed word~) sin16s_gen2::$8 ← (signed word)(word~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$8 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$8 ] ) always clobbers reg byte a -Statement [110] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ) always clobbers reg byte a reg byte y -Statement [111] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::i#2 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::i#2 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [112] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a -Statement [114] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] ) always clobbers reg byte a -Statement [116] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16u::a#8 ] ( main:3::sin16s_gen2:21::mul16s:105 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#8 ] ) always clobbers reg byte a -Statement [118] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:3::sin16s_gen2:21::mul16s:105 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::return#2 ] ) always clobbers reg byte a -Statement [119] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:105 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [120] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:105 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 ] ) always clobbers reg byte a -Statement [121] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$9 ] ( main:3::sin16s_gen2:21::mul16s:105 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a -Statement [122] (word~) mul16s::$16 ← (word~) mul16s::$9 - ((word))(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:105 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [123] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:105 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#1 ] ) always clobbers reg byte a -Statement [125] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:105 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] ) always clobbers reg byte a -Statement [128] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:105::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a -Statement [130] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:21::mul16s:105::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [132] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::sin16s_gen2:21::mul16s:105::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::sin16s_gen2:21::mul16s:105::mul16u:117 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:148::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:153::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:157::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:163::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:168::mul16u:181 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [138] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [139] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [141] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [142] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [144] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a reg byte y -Statement [145] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [146] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a -Statement [147] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a -Statement [149] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [150] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [151] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a -Statement [152] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a -Statement [154] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [155] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [156] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a -Statement [158] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a -Statement [159] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [160] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [161] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a -Statement [162] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a -Statement [164] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [165] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [166] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a -Statement [167] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a -Statement [169] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [170] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [171] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a reg byte y -Statement [172] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [174] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [177] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:102 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [179] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [180] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [182] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a -Statement [183] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [184] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [185] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:148 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:153 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:157 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:163 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:102::mulu16_sel:168 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a -Statement [189] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:97 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [190] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:97 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [191] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:97 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [193] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:97 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [194] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:97 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [195] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:97 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [200] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:3::sin16s_gen2:21::div32u16u:97::divr16u:188 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:97::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [203] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:21::div32u16u:97::divr16u:188 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:97::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [207] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:21::div32u16u:97::divr16u:188 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:97::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [209] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:21::div32u16u:97::divr16u:188 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:97::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [213] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:97::divr16u:188 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:97::divr16u:192 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [216] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) $3e8 [ fill::addr#0 fill::val#3 fill::end#0 ] ( main:3::fill:13 [ fill::addr#0 fill::val#3 fill::end#0 ] main:3::fill:15 [ fill::addr#0 fill::val#3 fill::end#0 ] ) always clobbers reg byte a -Statement [218] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:3::fill:13 [ fill::val#3 fill::end#0 fill::addr#2 ] main:3::fill:15 [ fill::val#3 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y -Statement [220] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:3::fill:13 [ fill::val#3 fill::end#0 fill::addr#1 ] main:3::fill:15 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a +Statement [29] (word) loop::$5 ← (word) xsin_idx#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ xsin_idx#11 loop::$5 ] ( main:3::loop:23 [ xsin_idx#11 loop::$5 ] ) always clobbers reg byte a +Statement [30] (signed word*~) loop::$1 ← (const signed word[XSIN_SIZE#0]) xsin#0 + (word) loop::$5 [ xsin_idx#11 loop::$1 ] ( main:3::loop:23 [ xsin_idx#11 loop::$1 ] ) always clobbers reg byte a +Statement [31] (signed word) loop::xpos#0 ← *((signed word*~) loop::$1) [ xsin_idx#11 loop::xpos#0 ] ( main:3::loop:23 [ xsin_idx#11 loop::xpos#0 ] ) always clobbers reg byte a reg byte y +Statement [32] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 [ xsin_idx#11 render_logo::xpos#0 ] ( main:3::loop:23 [ xsin_idx#11 render_logo::xpos#0 ] ) always clobbers reg byte a +Statement [35] if((word) xsin_idx#3!=(const word) XSIN_SIZE#0) goto loop::@6 [ xsin_idx#3 ] ( main:3::loop:23 [ xsin_idx#3 ] ) always clobbers reg byte a +Statement [39] (byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos#0 [ render_logo::xpos#0 render_logo::$0 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::$0 ] ) always clobbers reg byte a +Statement [41] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1 [ render_logo::xpos#0 render_logo::$2 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::$2 ] ) always clobbers reg byte a +Statement [43] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ render_logo::xpos#0 render_logo::$3 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::$3 ] ) always clobbers reg byte a +Statement [44] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3 [ render_logo::xpos#0 render_logo::x_char#0 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::xpos#0 render_logo::x_char#0 ] ) always clobbers reg byte a +Statement [45] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 [ render_logo::x_char#0 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 ] ) always clobbers reg byte a +Statement [64] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a +Statement [65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a +Statement [66] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a +Statement [67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a +Statement [68] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a +Statement [69] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#18 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#18 ] ) always clobbers reg byte a +Statement [71] (signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#0 [ render_logo::$17 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::$17 ] ) always clobbers reg byte a +Statement [77] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a +Statement [78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a +Statement [79] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a +Statement [80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a +Statement [81] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a +Statement [82] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#15 ] ( main:3::loop:23::render_logo:33 [ xsin_idx#11 render_logo::screen_idx#15 ] ) always clobbers reg byte a +Statement [99] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:3::sin16s_gen2:21 [ div32u16u::return#2 ] ) always clobbers reg byte a +Statement [100] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 ] ) always clobbers reg byte a +Statement [102] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a +Statement [104] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#0 ] ) always clobbers reg byte a +Statement [105] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 ] ) always clobbers reg byte a +Statement [107] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#2 ] ) always clobbers reg byte a +Statement [108] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$5 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$5 ] ) always clobbers reg byte a +Statement [109] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$6 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$6 ] ) always clobbers reg byte a +Statement [110] (signed word~) sin16s_gen2::$8 ← (signed word)(word~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$8 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$8 ] ) always clobbers reg byte a +Statement [111] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ) always clobbers reg byte a reg byte y +Statement [112] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::i#2 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::i#2 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a +Statement [113] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ) always clobbers reg byte a +Statement [115] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] ( main:3::sin16s_gen2:21 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] ) always clobbers reg byte a +Statement [117] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16u::a#8 ] ( main:3::sin16s_gen2:21::mul16s:106 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#8 ] ) always clobbers reg byte a +Statement [119] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:3::sin16s_gen2:21::mul16s:106 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::return#2 ] ) always clobbers reg byte a +Statement [120] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:106 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16s::m#0 ] ) always clobbers reg byte a +Statement [121] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:106 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 ] ) always clobbers reg byte a +Statement [122] (word~) mul16s::$9 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$9 ] ( main:3::sin16s_gen2:21::mul16s:106 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$9 ] ) always clobbers reg byte a +Statement [123] (word~) mul16s::$16 ← (word~) mul16s::$9 - ((word))(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:106 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a +Statement [124] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:106 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#1 ] ) always clobbers reg byte a +Statement [126] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:106 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] ) always clobbers reg byte a +Statement [129] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:106::mul16u:118 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:149::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:154::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:158::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:164::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:169::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a +Statement [131] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:21::mul16s:106::mul16u:118 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:149::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:154::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:158::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:164::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:169::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a +Statement [133] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::sin16s_gen2:21::mul16s:106::mul16u:118 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:149::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:154::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:158::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:164::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:169::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a +Statement [135] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::sin16s_gen2:21::mul16s:106::mul16u:118 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:149::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:154::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:158::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:164::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:169::mul16u:182 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [139] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a +Statement [140] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#1 ] ) always clobbers reg byte a +Statement [142] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a +Statement [143] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a +Statement [145] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$4 ] ) always clobbers reg byte a reg byte y +Statement [146] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a +Statement [147] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a +Statement [148] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a +Statement [150] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a +Statement [151] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a +Statement [152] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a +Statement [153] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a +Statement [155] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a +Statement [156] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a +Statement [157] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a +Statement [159] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a +Statement [160] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a +Statement [161] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a +Statement [162] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a +Statement [163] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a +Statement [165] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a +Statement [166] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a +Statement [167] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a +Statement [168] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a +Statement [170] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a +Statement [171] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a +Statement [172] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a reg byte y +Statement [173] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a +Statement [175] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a +Statement [178] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:103 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#5 ] ) always clobbers reg byte a +Statement [180] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:149 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:154 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:158 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:164 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:169 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a +Statement [181] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:149 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:154 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:158 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:164 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:169 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a +Statement [183] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:149 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:154 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:158 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:164 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:169 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a +Statement [184] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:149 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:154 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:158 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:164 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:169 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a +Statement [185] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:149 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:154 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:158 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:164 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:169 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a +Statement [186] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:149 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:154 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:158 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:164 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:103::mulu16_sel:169 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a +Statement [190] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a +Statement [191] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a +Statement [192] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a +Statement [194] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a +Statement [195] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a +Statement [196] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:98 [ div32u16u::return#0 ] ) always clobbers reg byte a +Statement [201] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:189 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:98::divr16u:193 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [204] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:189 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:98::divr16u:193 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [208] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:189 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:98::divr16u:193 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [210] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:189 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:98::divr16u:193 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [214] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:98::divr16u:189 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:98::divr16u:193 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [217] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) $3e8 [ fill::addr#0 fill::val#3 fill::end#0 ] ( main:3::fill:13 [ fill::addr#0 fill::val#3 fill::end#0 ] main:3::fill:15 [ fill::addr#0 fill::val#3 fill::end#0 ] ) always clobbers reg byte a +Statement [219] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:3::fill:13 [ fill::val#3 fill::end#0 fill::addr#2 ] main:3::fill:15 [ fill::val#3 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y +Statement [221] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:3::fill:13 [ fill::val#3 fill::end#0 fill::addr#1 ] main:3::fill:15 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::ch#2 main::ch#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] : zp ZP_WORD:3 , Potential registers zp ZP_BYTE:5 [ render_logo::screen_idx#10 render_logo::screen_idx#4 render_logo::screen_idx#18 render_logo::screen_idx#3 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , @@ -5554,195 +5565,197 @@ Potential registers zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16 Potential registers zp ZP_BYTE:51 [ divr16u::i#2 divr16u::i#1 ] : zp ZP_BYTE:51 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:52 [ fill::val#3 ] : zp ZP_BYTE:52 , reg byte x , Potential registers zp ZP_WORD:53 [ fill::addr#2 fill::addr#0 fill::addr#1 ] : zp ZP_WORD:53 , -Potential registers zp ZP_WORD:55 [ loop::$1 ] : zp ZP_WORD:55 , -Potential registers zp ZP_WORD:57 [ loop::xpos#0 ] : zp ZP_WORD:57 , -Potential registers zp ZP_WORD:59 [ render_logo::xpos#0 ] : zp ZP_WORD:59 , -Potential registers zp ZP_BYTE:61 [ render_logo::$0 ] : zp ZP_BYTE:61 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:62 [ render_logo::$1 ] : zp ZP_BYTE:62 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:63 [ render_logo::$2 ] : zp ZP_BYTE:63 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:64 [ render_logo::$3 ] : zp ZP_WORD:64 , -Potential registers zp ZP_BYTE:66 [ render_logo::x_char#0 ] : zp ZP_BYTE:66 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:67 [ render_logo::$34 ] : zp ZP_BYTE:67 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:68 [ render_logo::$38 ] : zp ZP_BYTE:68 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:69 [ render_logo::$42 ] : zp ZP_BYTE:69 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:70 [ render_logo::$46 ] : zp ZP_BYTE:70 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:71 [ render_logo::$50 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:72 [ render_logo::$17 ] : zp ZP_BYTE:72 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:73 [ render_logo::$80 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:74 [ render_logo::$84 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:75 [ render_logo::$88 ] : zp ZP_BYTE:75 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:76 [ render_logo::$92 ] : zp ZP_BYTE:76 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:77 [ render_logo::$96 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_DWORD:78 [ div32u16u::return#2 ] : zp ZP_DWORD:78 , -Potential registers zp ZP_DWORD:82 [ sin16s_gen2::step#0 ] : zp ZP_DWORD:82 , -Potential registers zp ZP_WORD:86 [ sin16s::return#0 ] : zp ZP_WORD:86 , -Potential registers zp ZP_WORD:88 [ mul16s::a#0 ] : zp ZP_WORD:88 , -Potential registers zp ZP_DWORD:90 [ mul16s::return#2 ] : zp ZP_DWORD:90 , -Potential registers zp ZP_DWORD:94 [ sin16s_gen2::$5 ] : zp ZP_DWORD:94 , -Potential registers zp ZP_WORD:98 [ sin16s_gen2::$6 ] : zp ZP_WORD:98 , -Potential registers zp ZP_WORD:100 [ sin16s_gen2::$8 ] : zp ZP_WORD:100 , -Potential registers zp ZP_DWORD:102 [ mul16u::return#2 ] : zp ZP_DWORD:102 , -Potential registers zp ZP_WORD:106 [ mul16s::$9 ] : zp ZP_WORD:106 , -Potential registers zp ZP_WORD:108 [ mul16s::$16 ] : zp ZP_WORD:108 , -Potential registers zp ZP_DWORD:110 [ mul16s::return#0 ] : zp ZP_DWORD:110 , -Potential registers zp ZP_BYTE:114 [ mul16u::$1 ] : zp ZP_BYTE:114 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_DWORD:115 [ sin16s::$4 ] : zp ZP_DWORD:115 , -Potential registers zp ZP_WORD:119 [ sin16s::x1#0 ] : zp ZP_WORD:119 , -Potential registers zp ZP_WORD:121 [ mulu16_sel::return#0 ] : zp ZP_WORD:121 , -Potential registers zp ZP_WORD:123 [ sin16s::x2#0 ] : zp ZP_WORD:123 , -Potential registers zp ZP_WORD:125 [ mulu16_sel::return#1 ] : zp ZP_WORD:125 , -Potential registers zp ZP_WORD:127 [ sin16s::x3#0 ] : zp ZP_WORD:127 , -Potential registers zp ZP_WORD:129 [ mulu16_sel::return#2 ] : zp ZP_WORD:129 , -Potential registers zp ZP_WORD:131 [ sin16s::x3_6#0 ] : zp ZP_WORD:131 , -Potential registers zp ZP_WORD:133 [ sin16s::usinx#0 ] : zp ZP_WORD:133 , -Potential registers zp ZP_WORD:135 [ mulu16_sel::return#10 ] : zp ZP_WORD:135 , -Potential registers zp ZP_WORD:137 [ sin16s::x4#0 ] : zp ZP_WORD:137 , -Potential registers zp ZP_WORD:139 [ mulu16_sel::return#11 ] : zp ZP_WORD:139 , -Potential registers zp ZP_WORD:141 [ sin16s::x5#0 ] : zp ZP_WORD:141 , -Potential registers zp ZP_WORD:143 [ sin16s::x5_128#0 ] : zp ZP_WORD:143 , -Potential registers zp ZP_WORD:145 [ sin16s::usinx#1 ] : zp ZP_WORD:145 , -Potential registers zp ZP_DWORD:147 [ mul16u::return#3 ] : zp ZP_DWORD:147 , -Potential registers zp ZP_DWORD:151 [ mulu16_sel::$0 ] : zp ZP_DWORD:151 , -Potential registers zp ZP_DWORD:155 [ mulu16_sel::$1 ] : zp ZP_DWORD:155 , -Potential registers zp ZP_WORD:159 [ mulu16_sel::return#12 ] : zp ZP_WORD:159 , -Potential registers zp ZP_WORD:161 [ divr16u::return#2 ] : zp ZP_WORD:161 , -Potential registers zp ZP_WORD:163 [ div32u16u::quotient_hi#0 ] : zp ZP_WORD:163 , -Potential registers zp ZP_WORD:165 [ divr16u::return#3 ] : zp ZP_WORD:165 , -Potential registers zp ZP_WORD:167 [ div32u16u::quotient_lo#0 ] : zp ZP_WORD:167 , -Potential registers zp ZP_DWORD:169 [ div32u16u::return#0 ] : zp ZP_DWORD:169 , -Potential registers zp ZP_BYTE:173 [ divr16u::$1 ] : zp ZP_BYTE:173 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:174 [ divr16u::$2 ] : zp ZP_BYTE:174 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:175 [ rem16u#1 ] : zp ZP_WORD:175 , -Potential registers zp ZP_WORD:177 [ fill::end#0 ] : zp ZP_WORD:177 , +Potential registers zp ZP_WORD:55 [ loop::$5 ] : zp ZP_WORD:55 , +Potential registers zp ZP_WORD:57 [ loop::$1 ] : zp ZP_WORD:57 , +Potential registers zp ZP_WORD:59 [ loop::xpos#0 ] : zp ZP_WORD:59 , +Potential registers zp ZP_WORD:61 [ render_logo::xpos#0 ] : zp ZP_WORD:61 , +Potential registers zp ZP_BYTE:63 [ render_logo::$0 ] : zp ZP_BYTE:63 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:64 [ render_logo::$1 ] : zp ZP_BYTE:64 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:65 [ render_logo::$2 ] : zp ZP_BYTE:65 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:66 [ render_logo::$3 ] : zp ZP_WORD:66 , +Potential registers zp ZP_BYTE:68 [ render_logo::x_char#0 ] : zp ZP_BYTE:68 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:69 [ render_logo::$34 ] : zp ZP_BYTE:69 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:70 [ render_logo::$38 ] : zp ZP_BYTE:70 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:71 [ render_logo::$42 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:72 [ render_logo::$46 ] : zp ZP_BYTE:72 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:73 [ render_logo::$50 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:74 [ render_logo::$17 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:75 [ render_logo::$80 ] : zp ZP_BYTE:75 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:76 [ render_logo::$84 ] : zp ZP_BYTE:76 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:77 [ render_logo::$88 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:78 [ render_logo::$92 ] : zp ZP_BYTE:78 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:79 [ render_logo::$96 ] : zp ZP_BYTE:79 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_DWORD:80 [ div32u16u::return#2 ] : zp ZP_DWORD:80 , +Potential registers zp ZP_DWORD:84 [ sin16s_gen2::step#0 ] : zp ZP_DWORD:84 , +Potential registers zp ZP_WORD:88 [ sin16s::return#0 ] : zp ZP_WORD:88 , +Potential registers zp ZP_WORD:90 [ mul16s::a#0 ] : zp ZP_WORD:90 , +Potential registers zp ZP_DWORD:92 [ mul16s::return#2 ] : zp ZP_DWORD:92 , +Potential registers zp ZP_DWORD:96 [ sin16s_gen2::$5 ] : zp ZP_DWORD:96 , +Potential registers zp ZP_WORD:100 [ sin16s_gen2::$6 ] : zp ZP_WORD:100 , +Potential registers zp ZP_WORD:102 [ sin16s_gen2::$8 ] : zp ZP_WORD:102 , +Potential registers zp ZP_DWORD:104 [ mul16u::return#2 ] : zp ZP_DWORD:104 , +Potential registers zp ZP_WORD:108 [ mul16s::$9 ] : zp ZP_WORD:108 , +Potential registers zp ZP_WORD:110 [ mul16s::$16 ] : zp ZP_WORD:110 , +Potential registers zp ZP_DWORD:112 [ mul16s::return#0 ] : zp ZP_DWORD:112 , +Potential registers zp ZP_BYTE:116 [ mul16u::$1 ] : zp ZP_BYTE:116 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_DWORD:117 [ sin16s::$4 ] : zp ZP_DWORD:117 , +Potential registers zp ZP_WORD:121 [ sin16s::x1#0 ] : zp ZP_WORD:121 , +Potential registers zp ZP_WORD:123 [ mulu16_sel::return#0 ] : zp ZP_WORD:123 , +Potential registers zp ZP_WORD:125 [ sin16s::x2#0 ] : zp ZP_WORD:125 , +Potential registers zp ZP_WORD:127 [ mulu16_sel::return#1 ] : zp ZP_WORD:127 , +Potential registers zp ZP_WORD:129 [ sin16s::x3#0 ] : zp ZP_WORD:129 , +Potential registers zp ZP_WORD:131 [ mulu16_sel::return#2 ] : zp ZP_WORD:131 , +Potential registers zp ZP_WORD:133 [ sin16s::x3_6#0 ] : zp ZP_WORD:133 , +Potential registers zp ZP_WORD:135 [ sin16s::usinx#0 ] : zp ZP_WORD:135 , +Potential registers zp ZP_WORD:137 [ mulu16_sel::return#10 ] : zp ZP_WORD:137 , +Potential registers zp ZP_WORD:139 [ sin16s::x4#0 ] : zp ZP_WORD:139 , +Potential registers zp ZP_WORD:141 [ mulu16_sel::return#11 ] : zp ZP_WORD:141 , +Potential registers zp ZP_WORD:143 [ sin16s::x5#0 ] : zp ZP_WORD:143 , +Potential registers zp ZP_WORD:145 [ sin16s::x5_128#0 ] : zp ZP_WORD:145 , +Potential registers zp ZP_WORD:147 [ sin16s::usinx#1 ] : zp ZP_WORD:147 , +Potential registers zp ZP_DWORD:149 [ mul16u::return#3 ] : zp ZP_DWORD:149 , +Potential registers zp ZP_DWORD:153 [ mulu16_sel::$0 ] : zp ZP_DWORD:153 , +Potential registers zp ZP_DWORD:157 [ mulu16_sel::$1 ] : zp ZP_DWORD:157 , +Potential registers zp ZP_WORD:161 [ mulu16_sel::return#12 ] : zp ZP_WORD:161 , +Potential registers zp ZP_WORD:163 [ divr16u::return#2 ] : zp ZP_WORD:163 , +Potential registers zp ZP_WORD:165 [ div32u16u::quotient_hi#0 ] : zp ZP_WORD:165 , +Potential registers zp ZP_WORD:167 [ divr16u::return#3 ] : zp ZP_WORD:167 , +Potential registers zp ZP_WORD:169 [ div32u16u::quotient_lo#0 ] : zp ZP_WORD:169 , +Potential registers zp ZP_DWORD:171 [ div32u16u::return#0 ] : zp ZP_DWORD:171 , +Potential registers zp ZP_BYTE:175 [ divr16u::$1 ] : zp ZP_BYTE:175 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:176 [ divr16u::$2 ] : zp ZP_BYTE:176 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:177 [ rem16u#1 ] : zp ZP_WORD:177 , +Potential registers zp ZP_WORD:179 [ fill::end#0 ] : zp ZP_WORD:179 , REGISTER UPLIFT SCOPES -Uplift Scope [render_logo] 506.94: zp ZP_BYTE:5 [ render_logo::screen_idx#10 render_logo::screen_idx#4 render_logo::screen_idx#18 render_logo::screen_idx#3 ] 499.17: zp ZP_BYTE:8 [ render_logo::screen_idx#15 render_logo::screen_idx#21 render_logo::screen_idx#5 render_logo::screen_idx#6 ] 271.07: zp ZP_BYTE:7 [ render_logo::logo_idx#11 render_logo::logo_idx#14 render_logo::logo_idx#4 ] 259.71: zp ZP_BYTE:6 [ render_logo::logo_idx#10 render_logo::logo_idx#3 ] 202: zp ZP_BYTE:67 [ render_logo::$34 ] 202: zp ZP_BYTE:68 [ render_logo::$38 ] 202: zp ZP_BYTE:69 [ render_logo::$42 ] 202: zp ZP_BYTE:70 [ render_logo::$46 ] 202: zp ZP_BYTE:71 [ render_logo::$50 ] 202: zp ZP_BYTE:73 [ render_logo::$80 ] 202: zp ZP_BYTE:74 [ render_logo::$84 ] 202: zp ZP_BYTE:75 [ render_logo::$88 ] 202: zp ZP_BYTE:76 [ render_logo::$92 ] 202: zp ZP_BYTE:77 [ render_logo::$96 ] 4: zp ZP_BYTE:61 [ render_logo::$0 ] 4: zp ZP_BYTE:62 [ render_logo::$1 ] 4: zp ZP_BYTE:63 [ render_logo::$2 ] 4: zp ZP_WORD:64 [ render_logo::$3 ] 2.43: zp ZP_WORD:59 [ render_logo::xpos#0 ] 2: zp ZP_BYTE:72 [ render_logo::$17 ] 0.36: zp ZP_BYTE:66 [ render_logo::x_char#0 ] -Uplift Scope [mul16u] 346.86: zp ZP_DWORD:25 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 249.57: zp ZP_DWORD:29 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 202: zp ZP_BYTE:114 [ mul16u::$1 ] 177.67: zp ZP_WORD:23 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] 8: zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 ] 4: zp ZP_DWORD:102 [ mul16u::return#2 ] 4: zp ZP_DWORD:147 [ mul16u::return#3 ] -Uplift Scope [divr16u] 106.92: zp ZP_WORD:45 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 35.54: zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp ZP_BYTE:173 [ divr16u::$1 ] 22: zp ZP_BYTE:174 [ divr16u::$2 ] 18.19: zp ZP_BYTE:51 [ divr16u::i#2 divr16u::i#1 ] 9.75: zp ZP_WORD:47 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 4: zp ZP_WORD:161 [ divr16u::return#2 ] 4: zp ZP_WORD:165 [ divr16u::return#3 ] -Uplift Scope [sin16s_gen2] 22: zp ZP_DWORD:94 [ sin16s_gen2::$5 ] 22: zp ZP_WORD:100 [ sin16s_gen2::$8 ] 18.19: zp ZP_WORD:15 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] 11: zp ZP_WORD:98 [ sin16s_gen2::$6 ] 10.08: zp ZP_DWORD:9 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] 8.5: zp ZP_WORD:13 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] 0.81: zp ZP_DWORD:82 [ sin16s_gen2::step#0 ] -Uplift Scope [sin16s] 27.5: zp ZP_DWORD:34 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 22: zp ZP_WORD:86 [ sin16s::return#0 ] 13: zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 4: zp ZP_DWORD:115 [ sin16s::$4 ] 4: zp ZP_WORD:123 [ sin16s::x2#0 ] 4: zp ZP_WORD:131 [ sin16s::x3_6#0 ] 4: zp ZP_WORD:137 [ sin16s::x4#0 ] 4: zp ZP_WORD:141 [ sin16s::x5#0 ] 4: zp ZP_WORD:143 [ sin16s::x5_128#0 ] 1: zp ZP_WORD:127 [ sin16s::x3#0 ] 1: zp ZP_WORD:145 [ sin16s::usinx#1 ] 0.64: zp ZP_WORD:119 [ sin16s::x1#0 ] 0.33: zp ZP_WORD:133 [ sin16s::usinx#0 ] 0.06: zp ZP_BYTE:33 [ sin16s::isUpper#2 ] -Uplift Scope [mulu16_sel] 24: zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] 21: zp ZP_WORD:42 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] 4: zp ZP_WORD:121 [ mulu16_sel::return#0 ] 4: zp ZP_WORD:125 [ mulu16_sel::return#1 ] 4: zp ZP_WORD:129 [ mulu16_sel::return#2 ] 4: zp ZP_WORD:135 [ mulu16_sel::return#10 ] 4: zp ZP_WORD:139 [ mulu16_sel::return#11 ] 4: zp ZP_DWORD:151 [ mulu16_sel::$0 ] 4: zp ZP_DWORD:155 [ mulu16_sel::$1 ] 1.71: zp ZP_WORD:159 [ mulu16_sel::return#12 ] 0.33: zp ZP_BYTE:44 [ mulu16_sel::select#5 ] -Uplift Scope [mul16s] 22: zp ZP_DWORD:90 [ mul16s::return#2 ] 12: zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] 4.33: zp ZP_DWORD:110 [ mul16s::return#0 ] 4: zp ZP_WORD:106 [ mul16s::$9 ] 4: zp ZP_WORD:108 [ mul16s::$16 ] 2.6: zp ZP_WORD:88 [ mul16s::a#0 ] -Uplift Scope [loop] 22: zp ZP_WORD:55 [ loop::$1 ] 22: zp ZP_WORD:57 [ loop::xpos#0 ] -Uplift Scope [fill] 36: zp ZP_WORD:53 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 2.6: zp ZP_WORD:177 [ fill::end#0 ] 1.83: zp ZP_BYTE:52 [ fill::val#3 ] +Uplift Scope [render_logo] 506.94: zp ZP_BYTE:5 [ render_logo::screen_idx#10 render_logo::screen_idx#4 render_logo::screen_idx#18 render_logo::screen_idx#3 ] 499.17: zp ZP_BYTE:8 [ render_logo::screen_idx#15 render_logo::screen_idx#21 render_logo::screen_idx#5 render_logo::screen_idx#6 ] 271.07: zp ZP_BYTE:7 [ render_logo::logo_idx#11 render_logo::logo_idx#14 render_logo::logo_idx#4 ] 259.71: zp ZP_BYTE:6 [ render_logo::logo_idx#10 render_logo::logo_idx#3 ] 202: zp ZP_BYTE:69 [ render_logo::$34 ] 202: zp ZP_BYTE:70 [ render_logo::$38 ] 202: zp ZP_BYTE:71 [ render_logo::$42 ] 202: zp ZP_BYTE:72 [ render_logo::$46 ] 202: zp ZP_BYTE:73 [ render_logo::$50 ] 202: zp ZP_BYTE:75 [ render_logo::$80 ] 202: zp ZP_BYTE:76 [ render_logo::$84 ] 202: zp ZP_BYTE:77 [ render_logo::$88 ] 202: zp ZP_BYTE:78 [ render_logo::$92 ] 202: zp ZP_BYTE:79 [ render_logo::$96 ] 4: zp ZP_BYTE:63 [ render_logo::$0 ] 4: zp ZP_BYTE:64 [ render_logo::$1 ] 4: zp ZP_BYTE:65 [ render_logo::$2 ] 4: zp ZP_WORD:66 [ render_logo::$3 ] 2.43: zp ZP_WORD:61 [ render_logo::xpos#0 ] 2: zp ZP_BYTE:74 [ render_logo::$17 ] 0.36: zp ZP_BYTE:68 [ render_logo::x_char#0 ] +Uplift Scope [mul16u] 346.86: zp ZP_DWORD:25 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 249.57: zp ZP_DWORD:29 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 202: zp ZP_BYTE:116 [ mul16u::$1 ] 177.67: zp ZP_WORD:23 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] 8: zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 ] 4: zp ZP_DWORD:104 [ mul16u::return#2 ] 4: zp ZP_DWORD:149 [ mul16u::return#3 ] +Uplift Scope [divr16u] 106.92: zp ZP_WORD:45 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 35.54: zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp ZP_BYTE:175 [ divr16u::$1 ] 22: zp ZP_BYTE:176 [ divr16u::$2 ] 18.19: zp ZP_BYTE:51 [ divr16u::i#2 divr16u::i#1 ] 9.75: zp ZP_WORD:47 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 4: zp ZP_WORD:163 [ divr16u::return#2 ] 4: zp ZP_WORD:167 [ divr16u::return#3 ] +Uplift Scope [sin16s_gen2] 22: zp ZP_DWORD:96 [ sin16s_gen2::$5 ] 22: zp ZP_WORD:102 [ sin16s_gen2::$8 ] 18.19: zp ZP_WORD:15 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] 11: zp ZP_WORD:100 [ sin16s_gen2::$6 ] 10.08: zp ZP_DWORD:9 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] 8.5: zp ZP_WORD:13 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] 0.81: zp ZP_DWORD:84 [ sin16s_gen2::step#0 ] +Uplift Scope [sin16s] 27.5: zp ZP_DWORD:34 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 22: zp ZP_WORD:88 [ sin16s::return#0 ] 13: zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 4: zp ZP_DWORD:117 [ sin16s::$4 ] 4: zp ZP_WORD:125 [ sin16s::x2#0 ] 4: zp ZP_WORD:133 [ sin16s::x3_6#0 ] 4: zp ZP_WORD:139 [ sin16s::x4#0 ] 4: zp ZP_WORD:143 [ sin16s::x5#0 ] 4: zp ZP_WORD:145 [ sin16s::x5_128#0 ] 1: zp ZP_WORD:129 [ sin16s::x3#0 ] 1: zp ZP_WORD:147 [ sin16s::usinx#1 ] 0.64: zp ZP_WORD:121 [ sin16s::x1#0 ] 0.33: zp ZP_WORD:135 [ sin16s::usinx#0 ] 0.06: zp ZP_BYTE:33 [ sin16s::isUpper#2 ] +Uplift Scope [mulu16_sel] 24: zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] 21: zp ZP_WORD:42 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] 4: zp ZP_WORD:123 [ mulu16_sel::return#0 ] 4: zp ZP_WORD:127 [ mulu16_sel::return#1 ] 4: zp ZP_WORD:131 [ mulu16_sel::return#2 ] 4: zp ZP_WORD:137 [ mulu16_sel::return#10 ] 4: zp ZP_WORD:141 [ mulu16_sel::return#11 ] 4: zp ZP_DWORD:153 [ mulu16_sel::$0 ] 4: zp ZP_DWORD:157 [ mulu16_sel::$1 ] 1.71: zp ZP_WORD:161 [ mulu16_sel::return#12 ] 0.33: zp ZP_BYTE:44 [ mulu16_sel::select#5 ] +Uplift Scope [loop] 22: zp ZP_WORD:55 [ loop::$5 ] 22: zp ZP_WORD:57 [ loop::$1 ] 22: zp ZP_WORD:59 [ loop::xpos#0 ] +Uplift Scope [mul16s] 22: zp ZP_DWORD:92 [ mul16s::return#2 ] 12: zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] 4.33: zp ZP_DWORD:112 [ mul16s::return#0 ] 4: zp ZP_WORD:108 [ mul16s::$9 ] 4: zp ZP_WORD:110 [ mul16s::$16 ] 2.6: zp ZP_WORD:90 [ mul16s::a#0 ] +Uplift Scope [fill] 36: zp ZP_WORD:53 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 2.6: zp ZP_WORD:179 [ fill::end#0 ] 1.83: zp ZP_BYTE:52 [ fill::val#3 ] Uplift Scope [main] 38.5: zp ZP_BYTE:2 [ main::ch#2 main::ch#1 ] -Uplift Scope [] 26.71: zp ZP_WORD:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] 0.8: zp ZP_WORD:175 [ rem16u#1 ] -Uplift Scope [div32u16u] 4: zp ZP_DWORD:78 [ div32u16u::return#2 ] 4: zp ZP_WORD:167 [ div32u16u::quotient_lo#0 ] 1.33: zp ZP_DWORD:169 [ div32u16u::return#0 ] 0.8: zp ZP_WORD:163 [ div32u16u::quotient_hi#0 ] +Uplift Scope [] 26.12: zp ZP_WORD:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] 0.8: zp ZP_WORD:177 [ rem16u#1 ] +Uplift Scope [div32u16u] 4: zp ZP_DWORD:80 [ div32u16u::return#2 ] 4: zp ZP_WORD:169 [ div32u16u::quotient_lo#0 ] 1.33: zp ZP_DWORD:171 [ div32u16u::return#0 ] 0.8: zp ZP_WORD:165 [ div32u16u::quotient_hi#0 ] -Uplifting [mul16u] best 72862 combination zp ZP_DWORD:25 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:29 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:23 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 ] zp ZP_DWORD:102 [ mul16u::return#2 ] zp ZP_DWORD:147 [ mul16u::return#3 ] -Uplifting [divr16u] best 72652 combination zp ZP_WORD:45 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:49 [ 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:47 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:161 [ divr16u::return#2 ] zp ZP_WORD:165 [ divr16u::return#3 ] -Uplifting [sin16s_gen2] best 72652 combination zp ZP_DWORD:94 [ sin16s_gen2::$5 ] zp ZP_WORD:100 [ sin16s_gen2::$8 ] zp ZP_WORD:15 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp ZP_WORD:98 [ sin16s_gen2::$6 ] zp ZP_DWORD:9 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp ZP_WORD:13 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp ZP_DWORD:82 [ sin16s_gen2::step#0 ] -Uplifting [sin16s] best 72652 combination zp ZP_DWORD:34 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:86 [ sin16s::return#0 ] zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:115 [ sin16s::$4 ] zp ZP_WORD:123 [ sin16s::x2#0 ] zp ZP_WORD:131 [ sin16s::x3_6#0 ] zp ZP_WORD:137 [ sin16s::x4#0 ] zp ZP_WORD:141 [ sin16s::x5#0 ] zp ZP_WORD:143 [ sin16s::x5_128#0 ] zp ZP_WORD:127 [ sin16s::x3#0 ] zp ZP_WORD:145 [ sin16s::usinx#1 ] zp ZP_WORD:119 [ sin16s::x1#0 ] zp ZP_WORD:133 [ sin16s::usinx#0 ] zp ZP_BYTE:33 [ sin16s::isUpper#2 ] -Uplifting [mulu16_sel] best 72636 combination zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:42 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:121 [ mulu16_sel::return#0 ] zp ZP_WORD:125 [ mulu16_sel::return#1 ] zp ZP_WORD:129 [ mulu16_sel::return#2 ] zp ZP_WORD:135 [ mulu16_sel::return#10 ] zp ZP_WORD:139 [ mulu16_sel::return#11 ] zp ZP_DWORD:151 [ mulu16_sel::$0 ] zp ZP_DWORD:155 [ mulu16_sel::$1 ] zp ZP_WORD:159 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] -Uplifting [mul16s] best 72636 combination zp ZP_DWORD:90 [ mul16s::return#2 ] zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp ZP_DWORD:110 [ mul16s::return#0 ] zp ZP_WORD:106 [ mul16s::$9 ] zp ZP_WORD:108 [ mul16s::$16 ] zp ZP_WORD:88 [ mul16s::a#0 ] -Uplifting [loop] best 72636 combination zp ZP_WORD:55 [ loop::$1 ] zp ZP_WORD:57 [ loop::xpos#0 ] -Uplifting [fill] best 72620 combination zp ZP_WORD:53 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp ZP_WORD:177 [ fill::end#0 ] reg byte x [ fill::val#3 ] -Uplifting [main] best 72500 combination reg byte x [ main::ch#2 main::ch#1 ] -Uplifting [] best 72500 combination zp ZP_WORD:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] zp ZP_WORD:175 [ rem16u#1 ] -Uplifting [div32u16u] best 72500 combination zp ZP_DWORD:78 [ div32u16u::return#2 ] zp ZP_WORD:167 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:169 [ div32u16u::return#0 ] zp ZP_WORD:163 [ div32u16u::quotient_hi#0 ] +Uplifting [mul16u] best 72972 combination zp ZP_DWORD:25 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:29 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:23 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 ] zp ZP_DWORD:104 [ mul16u::return#2 ] zp ZP_DWORD:149 [ mul16u::return#3 ] +Uplifting [divr16u] best 72762 combination zp ZP_WORD:45 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:49 [ 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:47 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:163 [ divr16u::return#2 ] zp ZP_WORD:167 [ divr16u::return#3 ] +Uplifting [sin16s_gen2] best 72762 combination zp ZP_DWORD:96 [ sin16s_gen2::$5 ] zp ZP_WORD:102 [ sin16s_gen2::$8 ] zp ZP_WORD:15 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp ZP_WORD:100 [ sin16s_gen2::$6 ] zp ZP_DWORD:9 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp ZP_WORD:13 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp ZP_DWORD:84 [ sin16s_gen2::step#0 ] +Uplifting [sin16s] best 72762 combination zp ZP_DWORD:34 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:88 [ sin16s::return#0 ] zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:117 [ sin16s::$4 ] zp ZP_WORD:125 [ sin16s::x2#0 ] zp ZP_WORD:133 [ sin16s::x3_6#0 ] zp ZP_WORD:139 [ sin16s::x4#0 ] zp ZP_WORD:143 [ sin16s::x5#0 ] zp ZP_WORD:145 [ sin16s::x5_128#0 ] zp ZP_WORD:129 [ sin16s::x3#0 ] zp ZP_WORD:147 [ sin16s::usinx#1 ] zp ZP_WORD:121 [ sin16s::x1#0 ] zp ZP_WORD:135 [ sin16s::usinx#0 ] zp ZP_BYTE:33 [ sin16s::isUpper#2 ] +Uplifting [mulu16_sel] best 72746 combination zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:42 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:123 [ mulu16_sel::return#0 ] zp ZP_WORD:127 [ mulu16_sel::return#1 ] zp ZP_WORD:131 [ mulu16_sel::return#2 ] zp ZP_WORD:137 [ mulu16_sel::return#10 ] zp ZP_WORD:141 [ mulu16_sel::return#11 ] zp ZP_DWORD:153 [ mulu16_sel::$0 ] zp ZP_DWORD:157 [ mulu16_sel::$1 ] zp ZP_WORD:161 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] +Uplifting [loop] best 72746 combination zp ZP_WORD:55 [ loop::$5 ] zp ZP_WORD:57 [ loop::$1 ] zp ZP_WORD:59 [ loop::xpos#0 ] +Uplifting [mul16s] best 72746 combination zp ZP_DWORD:92 [ mul16s::return#2 ] zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp ZP_DWORD:112 [ mul16s::return#0 ] zp ZP_WORD:108 [ mul16s::$9 ] zp ZP_WORD:110 [ mul16s::$16 ] zp ZP_WORD:90 [ mul16s::a#0 ] +Uplifting [fill] best 72730 combination zp ZP_WORD:53 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp ZP_WORD:179 [ fill::end#0 ] reg byte x [ fill::val#3 ] +Uplifting [main] best 72610 combination reg byte x [ main::ch#2 main::ch#1 ] +Uplifting [] best 72610 combination zp ZP_WORD:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] zp ZP_WORD:177 [ rem16u#1 ] +Uplifting [div32u16u] best 72610 combination zp ZP_DWORD:80 [ div32u16u::return#2 ] zp ZP_WORD:169 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:171 [ div32u16u::return#0 ] zp ZP_WORD:165 [ div32u16u::quotient_hi#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ render_logo::screen_idx#10 render_logo::screen_idx#4 render_logo::screen_idx#18 render_logo::screen_idx#3 ] -Uplifting [render_logo] best 67400 combination reg byte y [ render_logo::screen_idx#10 render_logo::screen_idx#4 render_logo::screen_idx#18 render_logo::screen_idx#3 ] +Uplifting [render_logo] best 67510 combination reg byte y [ render_logo::screen_idx#10 render_logo::screen_idx#4 render_logo::screen_idx#18 render_logo::screen_idx#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:8 [ render_logo::screen_idx#15 render_logo::screen_idx#21 render_logo::screen_idx#5 render_logo::screen_idx#6 ] -Uplifting [render_logo] best 62600 combination reg byte y [ render_logo::screen_idx#15 render_logo::screen_idx#21 render_logo::screen_idx#5 render_logo::screen_idx#6 ] +Uplifting [render_logo] best 62710 combination reg byte y [ render_logo::screen_idx#15 render_logo::screen_idx#21 render_logo::screen_idx#5 render_logo::screen_idx#6 ] Attempting to uplift remaining variables inzp ZP_BYTE:7 [ render_logo::logo_idx#11 render_logo::logo_idx#14 render_logo::logo_idx#4 ] -Uplifting [render_logo] best 62600 combination zp ZP_BYTE:7 [ render_logo::logo_idx#11 render_logo::logo_idx#14 render_logo::logo_idx#4 ] +Uplifting [render_logo] best 62710 combination zp ZP_BYTE:7 [ render_logo::logo_idx#11 render_logo::logo_idx#14 render_logo::logo_idx#4 ] Attempting to uplift remaining variables inzp ZP_BYTE:6 [ render_logo::logo_idx#10 render_logo::logo_idx#3 ] -Uplifting [render_logo] best 62600 combination zp ZP_BYTE:6 [ render_logo::logo_idx#10 render_logo::logo_idx#3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:67 [ render_logo::$34 ] -Uplifting [render_logo] best 62200 combination reg byte a [ render_logo::$34 ] -Attempting to uplift remaining variables inzp ZP_BYTE:68 [ render_logo::$38 ] -Uplifting [render_logo] best 61800 combination reg byte a [ render_logo::$38 ] -Attempting to uplift remaining variables inzp ZP_BYTE:69 [ render_logo::$42 ] -Uplifting [render_logo] best 61400 combination reg byte a [ render_logo::$42 ] -Attempting to uplift remaining variables inzp ZP_BYTE:70 [ render_logo::$46 ] -Uplifting [render_logo] best 61000 combination reg byte a [ render_logo::$46 ] -Attempting to uplift remaining variables inzp ZP_BYTE:71 [ render_logo::$50 ] -Uplifting [render_logo] best 60600 combination reg byte a [ render_logo::$50 ] -Attempting to uplift remaining variables inzp ZP_BYTE:73 [ render_logo::$80 ] -Uplifting [render_logo] best 60200 combination reg byte a [ render_logo::$80 ] -Attempting to uplift remaining variables inzp ZP_BYTE:74 [ render_logo::$84 ] -Uplifting [render_logo] best 59800 combination reg byte a [ render_logo::$84 ] -Attempting to uplift remaining variables inzp ZP_BYTE:75 [ render_logo::$88 ] -Uplifting [render_logo] best 59400 combination reg byte a [ render_logo::$88 ] -Attempting to uplift remaining variables inzp ZP_BYTE:76 [ render_logo::$92 ] -Uplifting [render_logo] best 59000 combination reg byte a [ render_logo::$92 ] -Attempting to uplift remaining variables inzp ZP_BYTE:77 [ render_logo::$96 ] -Uplifting [render_logo] best 58600 combination reg byte a [ render_logo::$96 ] -Attempting to uplift remaining variables inzp ZP_BYTE:61 [ render_logo::$0 ] -Uplifting [render_logo] best 58594 combination reg byte a [ render_logo::$0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:62 [ render_logo::$1 ] -Uplifting [render_logo] best 58588 combination reg byte a [ render_logo::$1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:63 [ render_logo::$2 ] -Uplifting [render_logo] best 58582 combination reg byte a [ render_logo::$2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:72 [ render_logo::$17 ] -Uplifting [render_logo] best 58576 combination reg byte a [ render_logo::$17 ] -Attempting to uplift remaining variables inzp ZP_BYTE:66 [ render_logo::x_char#0 ] -Uplifting [render_logo] best 58576 combination zp ZP_BYTE:66 [ render_logo::x_char#0 ] +Uplifting [render_logo] best 62710 combination zp ZP_BYTE:6 [ render_logo::logo_idx#10 render_logo::logo_idx#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:69 [ render_logo::$34 ] +Uplifting [render_logo] best 62310 combination reg byte a [ render_logo::$34 ] +Attempting to uplift remaining variables inzp ZP_BYTE:70 [ render_logo::$38 ] +Uplifting [render_logo] best 61910 combination reg byte a [ render_logo::$38 ] +Attempting to uplift remaining variables inzp ZP_BYTE:71 [ render_logo::$42 ] +Uplifting [render_logo] best 61510 combination reg byte a [ render_logo::$42 ] +Attempting to uplift remaining variables inzp ZP_BYTE:72 [ render_logo::$46 ] +Uplifting [render_logo] best 61110 combination reg byte a [ render_logo::$46 ] +Attempting to uplift remaining variables inzp ZP_BYTE:73 [ render_logo::$50 ] +Uplifting [render_logo] best 60710 combination reg byte a [ render_logo::$50 ] +Attempting to uplift remaining variables inzp ZP_BYTE:75 [ render_logo::$80 ] +Uplifting [render_logo] best 60310 combination reg byte a [ render_logo::$80 ] +Attempting to uplift remaining variables inzp ZP_BYTE:76 [ render_logo::$84 ] +Uplifting [render_logo] best 59910 combination reg byte a [ render_logo::$84 ] +Attempting to uplift remaining variables inzp ZP_BYTE:77 [ render_logo::$88 ] +Uplifting [render_logo] best 59510 combination reg byte a [ render_logo::$88 ] +Attempting to uplift remaining variables inzp ZP_BYTE:78 [ render_logo::$92 ] +Uplifting [render_logo] best 59110 combination reg byte a [ render_logo::$92 ] +Attempting to uplift remaining variables inzp ZP_BYTE:79 [ render_logo::$96 ] +Uplifting [render_logo] best 58710 combination reg byte a [ render_logo::$96 ] +Attempting to uplift remaining variables inzp ZP_BYTE:63 [ render_logo::$0 ] +Uplifting [render_logo] best 58704 combination reg byte a [ render_logo::$0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:64 [ render_logo::$1 ] +Uplifting [render_logo] best 58698 combination reg byte a [ render_logo::$1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:65 [ render_logo::$2 ] +Uplifting [render_logo] best 58692 combination reg byte a [ render_logo::$2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:74 [ render_logo::$17 ] +Uplifting [render_logo] best 58686 combination reg byte a [ render_logo::$17 ] +Attempting to uplift remaining variables inzp ZP_BYTE:68 [ render_logo::x_char#0 ] +Uplifting [render_logo] best 58686 combination zp ZP_BYTE:68 [ render_logo::x_char#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:33 [ sin16s::isUpper#2 ] -Uplifting [sin16s] best 58576 combination zp ZP_BYTE:33 [ sin16s::isUpper#2 ] -Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp ZP_WORD:145 [ sin16s::usinx#1 ] ] - score: 2 -Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] ] with [ zp ZP_WORD:127 [ sin16s::x3#0 ] ] - score: 2 -Coalescing zero page register with common assignment [ zp ZP_WORD:45 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:175 [ rem16u#1 ] ] - score: 2 -Coalescing zero page register with common assignment [ zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] ] with [ zp ZP_DWORD:102 [ mul16u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 ] ] with [ zp ZP_DWORD:110 [ mul16s::return#0 ] ] - score: 1 +Uplifting [sin16s] best 58686 combination zp ZP_BYTE:33 [ sin16s::isUpper#2 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp ZP_WORD:147 [ sin16s::usinx#1 ] ] - score: 2 +Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] ] with [ zp ZP_WORD:129 [ sin16s::x3#0 ] ] - score: 2 +Coalescing zero page register with common assignment [ zp ZP_WORD:45 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:177 [ rem16u#1 ] ] - score: 2 +Coalescing zero page register with common assignment [ zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] ] with [ zp ZP_DWORD:104 [ mul16u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 ] ] with [ zp ZP_DWORD:112 [ mul16s::return#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 ] ] with [ zp ZP_WORD:42 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:25 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] ] with [ zp ZP_DWORD:147 [ mul16u::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:34 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] ] with [ zp ZP_DWORD:115 [ sin16s::$4 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 ] ] with [ zp ZP_WORD:86 [ sin16s::return#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 ] ] with [ zp ZP_WORD:123 [ sin16s::x2#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 ] ] with [ zp ZP_WORD:137 [ sin16s::x4#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:161 [ divr16u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:165 [ divr16u::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:55 [ loop::$1 ] ] with [ zp ZP_WORD:57 [ loop::xpos#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:78 [ div32u16u::return#2 ] ] with [ zp ZP_DWORD:82 [ sin16s_gen2::step#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:78 [ div32u16u::return#2 sin16s_gen2::step#0 ] ] with [ zp ZP_DWORD:169 [ div32u16u::return#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:90 [ mul16s::return#2 ] ] with [ zp ZP_DWORD:94 [ sin16s_gen2::$5 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:98 [ sin16s_gen2::$6 ] ] with [ zp ZP_WORD:100 [ sin16s_gen2::$8 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:106 [ mul16s::$9 ] ] with [ zp ZP_WORD:108 [ mul16s::$16 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:121 [ mulu16_sel::return#0 ] ] with [ zp ZP_WORD:159 [ mulu16_sel::return#12 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:129 [ mulu16_sel::return#2 ] ] with [ zp ZP_WORD:131 [ sin16s::x3_6#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:139 [ mulu16_sel::return#11 ] ] with [ zp ZP_WORD:141 [ sin16s::x5#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:151 [ mulu16_sel::$0 ] ] with [ zp ZP_DWORD:155 [ mulu16_sel::$1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:25 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] ] with [ zp ZP_DWORD:149 [ mul16u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:34 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] ] with [ zp ZP_DWORD:117 [ sin16s::$4 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 ] ] with [ zp ZP_WORD:88 [ sin16s::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 ] ] with [ zp ZP_WORD:125 [ sin16s::x2#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 ] ] with [ zp ZP_WORD:139 [ sin16s::x4#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:163 [ divr16u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:167 [ divr16u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:55 [ loop::$5 ] ] with [ zp ZP_WORD:57 [ loop::$1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:59 [ loop::xpos#0 ] ] with [ zp ZP_WORD:61 [ render_logo::xpos#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:80 [ div32u16u::return#2 ] ] with [ zp ZP_DWORD:84 [ sin16s_gen2::step#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:80 [ div32u16u::return#2 sin16s_gen2::step#0 ] ] with [ zp ZP_DWORD:171 [ div32u16u::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:92 [ mul16s::return#2 ] ] with [ zp ZP_DWORD:96 [ sin16s_gen2::$5 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:100 [ sin16s_gen2::$6 ] ] with [ zp ZP_WORD:102 [ sin16s_gen2::$8 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:108 [ mul16s::$9 ] ] with [ zp ZP_WORD:110 [ mul16s::$16 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:123 [ mulu16_sel::return#0 ] ] with [ zp ZP_WORD:161 [ mulu16_sel::return#12 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:131 [ mulu16_sel::return#2 ] ] with [ zp ZP_WORD:133 [ sin16s::x3_6#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:141 [ mulu16_sel::return#11 ] ] with [ zp ZP_WORD:143 [ sin16s::x5#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:153 [ mulu16_sel::$0 ] ] with [ zp ZP_DWORD:157 [ mulu16_sel::$1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 ] ] with [ zp ZP_DWORD:25 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 ] ] with [ zp ZP_DWORD:90 [ mul16s::return#2 sin16s_gen2::$5 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 ] ] with [ zp ZP_WORD:88 [ mul16s::a#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 ] ] with [ zp ZP_WORD:133 [ sin16s::usinx#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 ] ] with [ zp ZP_WORD:125 [ mulu16_sel::return#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 ] ] with [ zp ZP_WORD:135 [ mulu16_sel::return#10 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 ] ] with [ zp ZP_WORD:167 [ div32u16u::quotient_lo#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:55 [ loop::$1 loop::xpos#0 ] ] with [ zp ZP_WORD:59 [ render_logo::xpos#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:121 [ mulu16_sel::return#0 mulu16_sel::return#12 ] ] with [ zp ZP_WORD:129 [ mulu16_sel::return#2 sin16s::x3_6#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:121 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 ] ] with [ zp ZP_WORD:139 [ mulu16_sel::return#11 sin16s::x5#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 sin16s_gen2::$5 ] ] with [ zp ZP_DWORD:151 [ mulu16_sel::$0 mulu16_sel::$1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:121 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 ] ] with [ zp ZP_WORD:143 [ sin16s::x5_128#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 ] ] with [ zp ZP_DWORD:92 [ mul16s::return#2 sin16s_gen2::$5 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 ] ] with [ zp ZP_WORD:90 [ mul16s::a#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 ] ] with [ zp ZP_WORD:135 [ sin16s::usinx#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 ] ] with [ zp ZP_WORD:127 [ mulu16_sel::return#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 ] ] with [ zp ZP_WORD:137 [ mulu16_sel::return#10 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 ] ] with [ zp ZP_WORD:169 [ div32u16u::quotient_lo#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:55 [ loop::$5 loop::$1 ] ] with [ zp ZP_WORD:59 [ loop::xpos#0 render_logo::xpos#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:123 [ mulu16_sel::return#0 mulu16_sel::return#12 ] ] with [ zp ZP_WORD:131 [ mulu16_sel::return#2 sin16s::x3_6#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:123 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 ] ] with [ zp ZP_WORD:141 [ mulu16_sel::return#11 sin16s::x5#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 sin16s_gen2::$5 ] ] with [ zp ZP_DWORD:153 [ mulu16_sel::$0 mulu16_sel::$1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:123 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 ] ] with [ zp ZP_WORD:145 [ sin16s::x5_128#0 ] ] - score: 1 Coalescing zero page register [ zp ZP_WORD:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] ] with [ zp ZP_WORD:13 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] ] Coalescing zero page register [ zp ZP_WORD:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] ] with [ zp ZP_WORD:45 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ] ] Coalescing zero page register [ zp ZP_WORD:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ] ] with [ zp ZP_WORD:53 [ fill::addr#2 fill::addr#0 fill::addr#1 ] ] Coalescing zero page register [ zp ZP_BYTE:6 [ render_logo::logo_idx#10 render_logo::logo_idx#3 ] ] with [ zp ZP_BYTE:7 [ render_logo::logo_idx#11 render_logo::logo_idx#14 render_logo::logo_idx#4 ] ] Coalescing zero page register [ zp ZP_BYTE:6 [ render_logo::logo_idx#10 render_logo::logo_idx#3 render_logo::logo_idx#11 render_logo::logo_idx#14 render_logo::logo_idx#4 ] ] with [ zp ZP_BYTE:33 [ sin16s::isUpper#2 ] ] -Coalescing zero page register [ zp ZP_BYTE:6 [ render_logo::logo_idx#10 render_logo::logo_idx#3 render_logo::logo_idx#11 render_logo::logo_idx#14 render_logo::logo_idx#4 sin16s::isUpper#2 ] ] with [ zp ZP_BYTE:66 [ render_logo::x_char#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:6 [ render_logo::logo_idx#10 render_logo::logo_idx#3 render_logo::logo_idx#11 render_logo::logo_idx#14 render_logo::logo_idx#4 sin16s::isUpper#2 ] ] with [ zp ZP_BYTE:68 [ render_logo::x_char#0 ] ] Coalescing zero page register [ zp ZP_WORD:15 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] ] with [ zp ZP_WORD:47 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] ] -Coalescing zero page register [ zp ZP_WORD:15 [ sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] ] with [ zp ZP_WORD:55 [ loop::$1 loop::xpos#0 render_logo::xpos#0 ] ] -Coalescing zero page register [ zp ZP_WORD:15 [ sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 loop::$1 loop::xpos#0 render_logo::xpos#0 ] ] with [ zp ZP_WORD:177 [ fill::end#0 ] ] +Coalescing zero page register [ zp ZP_WORD:15 [ sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] ] with [ zp ZP_WORD:55 [ loop::$5 loop::$1 loop::xpos#0 render_logo::xpos#0 ] ] +Coalescing zero page register [ zp ZP_WORD:15 [ sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 loop::$5 loop::$1 loop::xpos#0 render_logo::xpos#0 ] ] with [ zp ZP_WORD:179 [ fill::end#0 ] ] Coalescing zero page register [ zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 sin16s_gen2::$5 mulu16_sel::$0 mulu16_sel::$1 ] ] with [ zp ZP_DWORD:34 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$4 ] ] Coalescing zero page register [ zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] ] with [ zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] ] -Coalescing zero page register [ zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] ] with [ zp ZP_WORD:64 [ render_logo::$3 ] ] -Coalescing zero page register [ zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 render_logo::$3 ] ] with [ zp ZP_WORD:98 [ sin16s_gen2::$6 sin16s_gen2::$8 ] ] -Coalescing zero page register [ zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 render_logo::$3 sin16s_gen2::$6 sin16s_gen2::$8 ] ] with [ zp ZP_WORD:106 [ mul16s::$9 mul16s::$16 ] ] -Coalescing zero page register [ zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 render_logo::$3 sin16s_gen2::$6 sin16s_gen2::$8 mul16s::$9 mul16s::$16 ] ] with [ zp ZP_WORD:121 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] ] -Coalescing zero page register [ zp ZP_WORD:23 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] ] with [ zp ZP_WORD:163 [ div32u16u::quotient_hi#0 ] ] +Coalescing zero page register [ zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] ] with [ zp ZP_WORD:66 [ render_logo::$3 ] ] +Coalescing zero page register [ zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 render_logo::$3 ] ] with [ zp ZP_WORD:100 [ sin16s_gen2::$6 sin16s_gen2::$8 ] ] +Coalescing zero page register [ zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 render_logo::$3 sin16s_gen2::$6 sin16s_gen2::$8 ] ] with [ zp ZP_WORD:108 [ mul16s::$9 mul16s::$16 ] ] +Coalescing zero page register [ zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 render_logo::$3 sin16s_gen2::$6 sin16s_gen2::$8 mul16s::$9 mul16s::$16 ] ] with [ zp ZP_WORD:123 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] ] +Coalescing zero page register [ zp ZP_WORD:23 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] ] with [ zp ZP_WORD:165 [ div32u16u::quotient_hi#0 ] ] Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 fill::addr#2 fill::addr#0 fill::addr#1 ] Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:4 [ render_logo::logo_idx#10 render_logo::logo_idx#3 render_logo::logo_idx#11 render_logo::logo_idx#14 render_logo::logo_idx#4 sin16s::isUpper#2 render_logo::x_char#0 ] Allocated (was zp ZP_DWORD:9) zp ZP_DWORD:5 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] -Allocated (was zp ZP_WORD:15) zp ZP_WORD:9 [ sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 loop::$1 loop::xpos#0 render_logo::xpos#0 fill::end#0 ] +Allocated (was zp ZP_WORD:15) zp ZP_WORD:9 [ sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 loop::$5 loop::$1 loop::xpos#0 render_logo::xpos#0 fill::end#0 ] Allocated (was zp ZP_DWORD:17) zp ZP_DWORD:11 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 sin16s_gen2::$5 mulu16_sel::$0 mulu16_sel::$1 sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$4 ] Allocated (was zp ZP_WORD:21) zp ZP_WORD:15 [ mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 render_logo::$3 sin16s_gen2::$6 sin16s_gen2::$8 mul16s::$9 mul16s::$16 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] Allocated (was zp ZP_WORD:23) zp ZP_WORD:17 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 div32u16u::quotient_hi#0 ] Allocated (was zp ZP_DWORD:29) zp ZP_DWORD:19 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] Allocated (was zp ZP_WORD:38) zp ZP_WORD:23 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 sin16s::usinx#0 ] Allocated (was zp ZP_WORD:40) zp ZP_WORD:25 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 ] -Allocated (was zp ZP_DWORD:78) zp ZP_DWORD:27 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ] -Allocated (was zp ZP_WORD:119) zp ZP_WORD:31 [ sin16s::x1#0 ] +Allocated (was zp ZP_DWORD:80) zp ZP_DWORD:27 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ] +Allocated (was zp ZP_WORD:121) zp ZP_WORD:31 [ sin16s::x1#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -5751,6 +5764,7 @@ ASSEMBLER BEFORE OPTIMIZATION :BasicUpstart(bbegin) .pc = $80d "Program" //SEG2 Global Constants & labels + .const SIZEOF_SIGNED_WORD = 2 .label RASTER = $d012 .label BORDERCOL = $d020 .label BGCOL = $d021 @@ -5826,11 +5840,11 @@ main: { lda #VIC_MCM sta D016 //SEG22 [13] call fill - //SEG23 [215] phi from main::@3 to fill [phi:main::@3->fill] + //SEG23 [216] phi from main::@3 to fill [phi:main::@3->fill] fill_from_b3: - //SEG24 [215] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuxx=vbuc1 + //SEG24 [216] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuxx=vbuc1 ldx #BLACK - //SEG25 [215] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 + //SEG25 [216] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 lda #SCREEN @@ -5842,11 +5856,11 @@ main: { //SEG27 main::@4 b4: //SEG28 [15] call fill - //SEG29 [215] phi from main::@4 to fill [phi:main::@4->fill] + //SEG29 [216] phi from main::@4 to fill [phi:main::@4->fill] fill_from_b4: - //SEG30 [215] phi (byte) fill::val#3 = (const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@4->fill#0] -- vbuxx=vbuc1 + //SEG30 [216] phi (byte) fill::val#3 = (const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@4->fill#0] -- vbuxx=vbuc1 ldx #WHITE|8 - //SEG31 [215] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 + //SEG31 [216] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 lda #COLS @@ -5877,7 +5891,7 @@ main: { //SEG41 main::@2 b2: //SEG42 [21] call sin16s_gen2 - //SEG43 [96] phi from main::@2 to sin16s_gen2 [phi:main::@2->sin16s_gen2] + //SEG43 [97] phi from main::@2 to sin16s_gen2 [phi:main::@2->sin16s_gen2] sin16s_gen2_from_b2: jsr sin16s_gen2 //SEG44 [22] phi from main::@2 to main::@5 [phi:main::@2->main::@5] @@ -5898,6 +5912,7 @@ main: { //SEG50 loop loop: { .label _1 = 9 + .label _5 = 9 .label xpos = 9 //SEG51 [26] phi from loop to loop::@1 [phi:loop->loop::@1] b1_from_loop: @@ -5922,15 +5937,22 @@ loop: { b3: //SEG57 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG58 [29] (signed word*~) loop::$1 ← (const signed word[XSIN_SIZE#0]) xsin#0 + (word) xsin_idx#11 -- pwsz1=pwsc1_plus_vwuz2 + //SEG58 [29] (word) loop::$5 ← (word) xsin_idx#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz2_rol_1 lda xsin_idx + asl + sta _5 + lda xsin_idx+1 + rol + sta _5+1 + //SEG59 [30] (signed word*~) loop::$1 ← (const signed word[XSIN_SIZE#0]) xsin#0 + (word) loop::$5 -- pwsz1=pwsc1_plus_vwuz1 clc + lda _1 adc #xsin sta _1+1 - //SEG59 [30] (signed word) loop::xpos#0 ← *((signed word*~) loop::$1) -- vwsz1=_deref_pwsz1 + //SEG60 [31] (signed word) loop::xpos#0 ← *((signed word*~) loop::$1) -- vwsz1=_deref_pwsz1 ldy #0 lda (xpos),y tax @@ -5938,69 +5960,66 @@ loop: { lda (xpos),y stx xpos sta xpos+1 - //SEG60 [31] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 - //SEG61 [32] call render_logo + //SEG61 [32] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 + //SEG62 [33] call render_logo jsr render_logo jmp b5 - //SEG62 loop::@5 + //SEG63 loop::@5 b5: - //SEG63 [33] (word) xsin_idx#3 ← (word) xsin_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vwuz1=vwuz1_plus_2 - lda xsin_idx - clc - adc #2 - sta xsin_idx - bcc !+ + //SEG64 [34] (word) xsin_idx#3 ← ++ (word) xsin_idx#11 -- vwuz1=_inc_vwuz1 + inc xsin_idx + bne !+ inc xsin_idx+1 !: - //SEG64 [34] if((word) xsin_idx#3!=(const word) XSIN_SIZE#0*(byte/signed byte/word/signed word/dword/signed dword) 2) goto loop::@6 -- vwuz1_neq_vwuc1_then_la1 + //SEG65 [35] if((word) xsin_idx#3!=(const word) XSIN_SIZE#0) goto loop::@6 -- vwuz1_neq_vwuc1_then_la1 lda xsin_idx+1 - cmp #>XSIN_SIZE*2 + cmp #>XSIN_SIZE bne b6_from_b5 lda xsin_idx - cmp #loop::@4] + //SEG66 [36] phi from loop::@5 to loop::@4 [phi:loop::@5->loop::@4] b4_from_b5: - //SEG66 [35] phi (word) xsin_idx#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@5->loop::@4#0] -- vwuz1=vbuc1 + //SEG67 [36] phi (word) xsin_idx#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@5->loop::@4#0] -- vwuz1=vbuc1 lda #0 sta xsin_idx lda #0 sta xsin_idx+1 jmp b4 - //SEG67 loop::@4 + //SEG68 loop::@4 b4: - //SEG68 [36] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG69 [37] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG69 [26] phi from loop::@4 to loop::@1 [phi:loop::@4->loop::@1] + //SEG70 [26] phi from loop::@4 to loop::@1 [phi:loop::@4->loop::@1] b1_from_b4: - //SEG70 [26] phi (word) xsin_idx#11 = (word) xsin_idx#19 [phi:loop::@4->loop::@1#0] -- register_copy + //SEG71 [26] phi (word) xsin_idx#11 = (word) xsin_idx#19 [phi:loop::@4->loop::@1#0] -- register_copy jmp b1 - //SEG71 [37] phi from loop::@5 to loop::@6 [phi:loop::@5->loop::@6] + //SEG72 [38] phi from loop::@5 to loop::@6 [phi:loop::@5->loop::@6] b6_from_b5: jmp b6 - //SEG72 loop::@6 + //SEG73 loop::@6 b6: - //SEG73 [35] phi from loop::@6 to loop::@4 [phi:loop::@6->loop::@4] + //SEG74 [36] phi from loop::@6 to loop::@4 [phi:loop::@6->loop::@4] b4_from_b6: - //SEG74 [35] phi (word) xsin_idx#19 = (word) xsin_idx#3 [phi:loop::@6->loop::@4#0] -- register_copy + //SEG75 [36] phi (word) xsin_idx#19 = (word) xsin_idx#3 [phi:loop::@6->loop::@4#0] -- register_copy jmp b4 } -//SEG75 render_logo +//SEG76 render_logo // render_logo(signed word zeropage(9) xpos) render_logo: { .label _3 = $f .label xpos = 9 .label x_char = 4 .label logo_idx = 4 - //SEG76 [38] (byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos#0 -- vbuaa=_byte_vwsz1 + //SEG77 [39] (byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos#0 -- vbuaa=_byte_vwsz1 lda xpos - //SEG77 [39] (byte~) render_logo::$1 ← (byte~) render_logo::$0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuaa_band_vbuc1 + //SEG78 [40] (byte~) render_logo::$1 ← (byte~) render_logo::$0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuaa_band_vbuc1 and #7 - //SEG78 [40] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1 -- vbuaa=vbuc1_bor_vbuaa + //SEG79 [41] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1 -- vbuaa=vbuc1_bor_vbuaa ora #VIC_MCM - //SEG79 [41] *((const byte*) D016#0) ← (byte~) render_logo::$2 -- _deref_pbuc1=vbuaa + //SEG80 [42] *((const byte*) D016#0) ← (byte~) render_logo::$2 -- _deref_pbuc1=vbuaa sta D016 - //SEG80 [42] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwsz1=vwsz2_ror_3 + //SEG81 [43] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwsz1=vwsz2_ror_3 lda xpos+1 cmp #$80 ror @@ -6016,282 +6035,282 @@ render_logo: { cmp #$80 ror _3+1 ror _3 - //SEG81 [43] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3 -- vbsz1=_sbyte_vwsz2 + //SEG82 [44] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3 -- vbsz1=_sbyte_vwsz2 lda _3 sta x_char - //SEG82 [44] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 -- vwsz1_lt_0_then_la1 + //SEG83 [45] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 -- vwsz1_lt_0_then_la1 lda xpos+1 bmi b1 - //SEG83 [45] phi from render_logo to render_logo::@2 [phi:render_logo->render_logo::@2] + //SEG84 [46] phi from render_logo to render_logo::@2 [phi:render_logo->render_logo::@2] b2_from_render_logo: - //SEG84 [45] phi (byte) render_logo::screen_idx#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo->render_logo::@2#0] -- vbuyy=vbuc1 + //SEG85 [46] phi (byte) render_logo::screen_idx#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo->render_logo::@2#0] -- vbuyy=vbuc1 ldy #0 jmp b2 - //SEG85 render_logo::@2 + //SEG86 render_logo::@2 b2: - //SEG86 [46] if((byte) render_logo::screen_idx#18!=(byte)(signed byte) render_logo::x_char#0) goto render_logo::@3 -- vbuyy_neq_vbuz1_then_la1 + //SEG87 [47] if((byte) render_logo::screen_idx#18!=(byte)(signed byte) render_logo::x_char#0) goto render_logo::@3 -- vbuyy_neq_vbuz1_then_la1 cpy x_char bne b3 - //SEG87 [47] phi from render_logo::@2 to render_logo::@5 [phi:render_logo::@2->render_logo::@5] + //SEG88 [48] phi from render_logo::@2 to render_logo::@5 [phi:render_logo::@2->render_logo::@5] b5_from_b2: - //SEG88 [47] phi (byte) render_logo::logo_idx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@2->render_logo::@5#0] -- vbuz1=vbuc1 + //SEG89 [48] phi (byte) render_logo::logo_idx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@2->render_logo::@5#0] -- vbuz1=vbuc1 lda #0 sta logo_idx - //SEG89 [47] phi (byte) render_logo::screen_idx#10 = (byte) render_logo::screen_idx#18 [phi:render_logo::@2->render_logo::@5#1] -- register_copy + //SEG90 [48] phi (byte) render_logo::screen_idx#10 = (byte) render_logo::screen_idx#18 [phi:render_logo::@2->render_logo::@5#1] -- register_copy jmp b5 - //SEG90 render_logo::@5 + //SEG91 render_logo::@5 b5: - //SEG91 [48] if((byte) render_logo::screen_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@6 -- vbuyy_neq_vbuc1_then_la1 + //SEG92 [49] if((byte) render_logo::screen_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@6 -- vbuyy_neq_vbuc1_then_la1 cpy #$28 bne b6 jmp breturn - //SEG92 render_logo::@return + //SEG93 render_logo::@return breturn: - //SEG93 [49] return + //SEG94 [50] return rts - //SEG94 render_logo::@6 + //SEG95 render_logo::@6 b6: - //SEG95 [50] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#10) ← (byte) render_logo::logo_idx#10 -- pbuc1_derefidx_vbuyy=vbuz1 + //SEG96 [51] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#10) ← (byte) render_logo::logo_idx#10 -- pbuc1_derefidx_vbuyy=vbuz1 lda logo_idx sta SCREEN,y jmp b15_1 - //SEG96 render_logo::@15_1 + //SEG97 render_logo::@15_1 b15_1: - //SEG97 [51] (byte/signed word/word/dword/signed dword~) render_logo::$34 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_vbuc1 + //SEG98 [52] (byte/signed word/word/dword/signed dword~) render_logo::$34 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_vbuc1 lda #$28*1 clc adc logo_idx - //SEG98 [52] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$34 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG99 [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$34 -- pbuc1_derefidx_vbuyy=vbuaa sta SCREEN+$28*1,y jmp b15_2 - //SEG99 render_logo::@15_2 + //SEG100 render_logo::@15_2 b15_2: - //SEG100 [53] (byte/signed word/word/dword/signed dword~) render_logo::$38 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuz1_plus_vbuc1 + //SEG101 [54] (byte/signed word/word/dword/signed dword~) render_logo::$38 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuz1_plus_vbuc1 lda #$28*2 clc adc logo_idx - //SEG101 [54] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$38 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG102 [55] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$38 -- pbuc1_derefidx_vbuyy=vbuaa sta SCREEN+$28*2,y jmp b15_3 - //SEG102 render_logo::@15_3 + //SEG103 render_logo::@15_3 b15_3: - //SEG103 [55] (byte/signed word/word/dword/signed dword~) render_logo::$42 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_plus_vbuc1 + //SEG104 [56] (byte/signed word/word/dword/signed dword~) render_logo::$42 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_plus_vbuc1 lda #$28*3 clc adc logo_idx - //SEG104 [56] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$42 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG105 [57] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$42 -- pbuc1_derefidx_vbuyy=vbuaa sta SCREEN+$28*3,y jmp b15_4 - //SEG105 render_logo::@15_4 + //SEG106 render_logo::@15_4 b15_4: - //SEG106 [57] (byte/signed word/word/dword/signed dword~) render_logo::$46 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_plus_vbuc1 + //SEG107 [58] (byte/signed word/word/dword/signed dword~) render_logo::$46 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_plus_vbuc1 lda #$28*4 clc adc logo_idx - //SEG107 [58] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$46 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG108 [59] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$46 -- pbuc1_derefidx_vbuyy=vbuaa sta SCREEN+$28*4,y jmp b15_5 - //SEG108 render_logo::@15_5 + //SEG109 render_logo::@15_5 b15_5: - //SEG109 [59] (byte/signed word/word/dword/signed dword~) render_logo::$50 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuaa=vbuz1_plus_vbuc1 + //SEG110 [60] (byte/signed word/word/dword/signed dword~) render_logo::$50 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuaa=vbuz1_plus_vbuc1 lda #$28*5 clc adc logo_idx - //SEG110 [60] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$50 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG111 [61] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$50 -- pbuc1_derefidx_vbuyy=vbuaa sta SCREEN+$28*5,y jmp b7 - //SEG111 render_logo::@7 + //SEG112 render_logo::@7 b7: - //SEG112 [61] (byte) render_logo::screen_idx#4 ← ++ (byte) render_logo::screen_idx#10 -- vbuyy=_inc_vbuyy + //SEG113 [62] (byte) render_logo::screen_idx#4 ← ++ (byte) render_logo::screen_idx#10 -- vbuyy=_inc_vbuyy iny - //SEG113 [62] (byte) render_logo::logo_idx#3 ← ++ (byte) render_logo::logo_idx#10 -- vbuz1=_inc_vbuz1 + //SEG114 [63] (byte) render_logo::logo_idx#3 ← ++ (byte) render_logo::logo_idx#10 -- vbuz1=_inc_vbuz1 inc logo_idx - //SEG114 [47] phi from render_logo::@7 to render_logo::@5 [phi:render_logo::@7->render_logo::@5] + //SEG115 [48] phi from render_logo::@7 to render_logo::@5 [phi:render_logo::@7->render_logo::@5] b5_from_b7: - //SEG115 [47] phi (byte) render_logo::logo_idx#10 = (byte) render_logo::logo_idx#3 [phi:render_logo::@7->render_logo::@5#0] -- register_copy - //SEG116 [47] phi (byte) render_logo::screen_idx#10 = (byte) render_logo::screen_idx#4 [phi:render_logo::@7->render_logo::@5#1] -- register_copy + //SEG116 [48] phi (byte) render_logo::logo_idx#10 = (byte) render_logo::logo_idx#3 [phi:render_logo::@7->render_logo::@5#0] -- register_copy + //SEG117 [48] phi (byte) render_logo::screen_idx#10 = (byte) render_logo::screen_idx#4 [phi:render_logo::@7->render_logo::@5#1] -- register_copy jmp b5 - //SEG117 render_logo::@3 + //SEG118 render_logo::@3 b3: - //SEG118 [63] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG119 [64] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #0 sta SCREEN,y jmp b7_1 - //SEG119 render_logo::@7_1 + //SEG120 render_logo::@7_1 b7_1: - //SEG120 [64] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG121 [65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #0 sta SCREEN+$28*1,y jmp b7_2 - //SEG121 render_logo::@7_2 + //SEG122 render_logo::@7_2 b7_2: - //SEG122 [65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG123 [66] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #0 sta SCREEN+$28*2,y jmp b7_3 - //SEG123 render_logo::@7_3 + //SEG124 render_logo::@7_3 b7_3: - //SEG124 [66] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG125 [67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #0 sta SCREEN+$28*3,y jmp b7_4 - //SEG125 render_logo::@7_4 + //SEG126 render_logo::@7_4 b7_4: - //SEG126 [67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG127 [68] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #0 sta SCREEN+$28*4,y jmp b7_5 - //SEG127 render_logo::@7_5 + //SEG128 render_logo::@7_5 b7_5: - //SEG128 [68] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG129 [69] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #0 sta SCREEN+$28*5,y jmp b4 - //SEG129 render_logo::@4 + //SEG130 render_logo::@4 b4: - //SEG130 [69] (byte) render_logo::screen_idx#3 ← ++ (byte) render_logo::screen_idx#18 -- vbuyy=_inc_vbuyy + //SEG131 [70] (byte) render_logo::screen_idx#3 ← ++ (byte) render_logo::screen_idx#18 -- vbuyy=_inc_vbuyy iny - //SEG131 [45] phi from render_logo::@4 to render_logo::@2 [phi:render_logo::@4->render_logo::@2] + //SEG132 [46] phi from render_logo::@4 to render_logo::@2 [phi:render_logo::@4->render_logo::@2] b2_from_b4: - //SEG132 [45] phi (byte) render_logo::screen_idx#18 = (byte) render_logo::screen_idx#3 [phi:render_logo::@4->render_logo::@2#0] -- register_copy + //SEG133 [46] phi (byte) render_logo::screen_idx#18 = (byte) render_logo::screen_idx#3 [phi:render_logo::@4->render_logo::@2#0] -- register_copy jmp b2 - //SEG133 render_logo::@1 + //SEG134 render_logo::@1 b1: - //SEG134 [70] (signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#0 -- vbsaa=_neg_vbsz1 + //SEG135 [71] (signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#0 -- vbsaa=_neg_vbsz1 lda x_char eor #$ff clc adc #1 - //SEG135 [71] (byte~) render_logo::logo_idx#14 ← (byte)(signed byte~) render_logo::$17 -- vbuz1=vbuaa + //SEG136 [72] (byte~) render_logo::logo_idx#14 ← (byte)(signed byte~) render_logo::$17 -- vbuz1=vbuaa sta logo_idx - //SEG136 [72] phi from render_logo::@1 to render_logo::@8 [phi:render_logo::@1->render_logo::@8] + //SEG137 [73] phi from render_logo::@1 to render_logo::@8 [phi:render_logo::@1->render_logo::@8] b8_from_b1: - //SEG137 [72] phi (byte) render_logo::screen_idx#21 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@1->render_logo::@8#0] -- vbuyy=vbuc1 + //SEG138 [73] phi (byte) render_logo::screen_idx#21 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@1->render_logo::@8#0] -- vbuyy=vbuc1 ldy #0 - //SEG138 [72] phi (byte) render_logo::logo_idx#11 = (byte~) render_logo::logo_idx#14 [phi:render_logo::@1->render_logo::@8#1] -- register_copy + //SEG139 [73] phi (byte) render_logo::logo_idx#11 = (byte~) render_logo::logo_idx#14 [phi:render_logo::@1->render_logo::@8#1] -- register_copy jmp b8 - //SEG139 render_logo::@8 + //SEG140 render_logo::@8 b8: - //SEG140 [73] if((byte) render_logo::logo_idx#11!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG141 [74] if((byte) render_logo::logo_idx#11!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp logo_idx bne b9 - //SEG141 [74] phi from render_logo::@13 render_logo::@8 to render_logo::@11 [phi:render_logo::@13/render_logo::@8->render_logo::@11] + //SEG142 [75] phi from render_logo::@13 render_logo::@8 to render_logo::@11 [phi:render_logo::@13/render_logo::@8->render_logo::@11] b11_from_b13: b11_from_b8: - //SEG142 [74] phi (byte) render_logo::screen_idx#15 = (byte) render_logo::screen_idx#6 [phi:render_logo::@13/render_logo::@8->render_logo::@11#0] -- register_copy + //SEG143 [75] phi (byte) render_logo::screen_idx#15 = (byte) render_logo::screen_idx#6 [phi:render_logo::@13/render_logo::@8->render_logo::@11#0] -- register_copy jmp b11 - //SEG143 render_logo::@11 + //SEG144 render_logo::@11 b11: - //SEG144 [75] if((byte) render_logo::screen_idx#15!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@12 -- vbuyy_neq_vbuc1_then_la1 + //SEG145 [76] if((byte) render_logo::screen_idx#15!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@12 -- vbuyy_neq_vbuc1_then_la1 cpy #$28 bne b12 jmp breturn - //SEG145 render_logo::@12 + //SEG146 render_logo::@12 b12: - //SEG146 [76] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG147 [77] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #0 sta SCREEN,y jmp b32_1 - //SEG147 render_logo::@32_1 + //SEG148 render_logo::@32_1 b32_1: - //SEG148 [77] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG149 [78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #0 sta SCREEN+$28*1,y jmp b32_2 - //SEG149 render_logo::@32_2 + //SEG150 render_logo::@32_2 b32_2: - //SEG150 [78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG151 [79] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #0 sta SCREEN+$28*2,y jmp b32_3 - //SEG151 render_logo::@32_3 + //SEG152 render_logo::@32_3 b32_3: - //SEG152 [79] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG153 [80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #0 sta SCREEN+$28*3,y jmp b32_4 - //SEG153 render_logo::@32_4 + //SEG154 render_logo::@32_4 b32_4: - //SEG154 [80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG155 [81] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #0 sta SCREEN+$28*4,y jmp b32_5 - //SEG155 render_logo::@32_5 + //SEG156 render_logo::@32_5 b32_5: - //SEG156 [81] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG157 [82] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #0 sta SCREEN+$28*5,y jmp b13 - //SEG157 render_logo::@13 + //SEG158 render_logo::@13 b13: - //SEG158 [82] (byte) render_logo::screen_idx#6 ← ++ (byte) render_logo::screen_idx#15 -- vbuyy=_inc_vbuyy + //SEG159 [83] (byte) render_logo::screen_idx#6 ← ++ (byte) render_logo::screen_idx#15 -- vbuyy=_inc_vbuyy iny jmp b11_from_b13 - //SEG159 render_logo::@9 + //SEG160 render_logo::@9 b9: - //SEG160 [83] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#21) ← (byte) render_logo::logo_idx#11 -- pbuc1_derefidx_vbuyy=vbuz1 + //SEG161 [84] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#21) ← (byte) render_logo::logo_idx#11 -- pbuc1_derefidx_vbuyy=vbuz1 lda logo_idx sta SCREEN,y jmp b24_1 - //SEG161 render_logo::@24_1 + //SEG162 render_logo::@24_1 b24_1: - //SEG162 [84] (byte/signed word/word/dword/signed dword~) render_logo::$80 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_vbuc1 + //SEG163 [85] (byte/signed word/word/dword/signed dword~) render_logo::$80 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_vbuc1 lda #$28*1 clc adc logo_idx - //SEG163 [85] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$80 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG164 [86] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$80 -- pbuc1_derefidx_vbuyy=vbuaa sta SCREEN+$28*1,y jmp b24_2 - //SEG164 render_logo::@24_2 + //SEG165 render_logo::@24_2 b24_2: - //SEG165 [86] (byte/signed word/word/dword/signed dword~) render_logo::$84 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuz1_plus_vbuc1 + //SEG166 [87] (byte/signed word/word/dword/signed dword~) render_logo::$84 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuz1_plus_vbuc1 lda #$28*2 clc adc logo_idx - //SEG166 [87] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$84 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG167 [88] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$84 -- pbuc1_derefidx_vbuyy=vbuaa sta SCREEN+$28*2,y jmp b24_3 - //SEG167 render_logo::@24_3 + //SEG168 render_logo::@24_3 b24_3: - //SEG168 [88] (byte/signed word/word/dword/signed dword~) render_logo::$88 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_plus_vbuc1 + //SEG169 [89] (byte/signed word/word/dword/signed dword~) render_logo::$88 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_plus_vbuc1 lda #$28*3 clc adc logo_idx - //SEG169 [89] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$88 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG170 [90] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$88 -- pbuc1_derefidx_vbuyy=vbuaa sta SCREEN+$28*3,y jmp b24_4 - //SEG170 render_logo::@24_4 + //SEG171 render_logo::@24_4 b24_4: - //SEG171 [90] (byte/signed word/word/dword/signed dword~) render_logo::$92 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_plus_vbuc1 + //SEG172 [91] (byte/signed word/word/dword/signed dword~) render_logo::$92 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_plus_vbuc1 lda #$28*4 clc adc logo_idx - //SEG172 [91] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$92 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG173 [92] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$92 -- pbuc1_derefidx_vbuyy=vbuaa sta SCREEN+$28*4,y jmp b24_5 - //SEG173 render_logo::@24_5 + //SEG174 render_logo::@24_5 b24_5: - //SEG174 [92] (byte/signed word/word/dword/signed dword~) render_logo::$96 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuaa=vbuz1_plus_vbuc1 + //SEG175 [93] (byte/signed word/word/dword/signed dword~) render_logo::$96 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuaa=vbuz1_plus_vbuc1 lda #$28*5 clc adc logo_idx - //SEG175 [93] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$96 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG176 [94] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$96 -- pbuc1_derefidx_vbuyy=vbuaa sta SCREEN+$28*5,y jmp b10 - //SEG176 render_logo::@10 + //SEG177 render_logo::@10 b10: - //SEG177 [94] (byte) render_logo::screen_idx#5 ← ++ (byte) render_logo::screen_idx#21 -- vbuyy=_inc_vbuyy + //SEG178 [95] (byte) render_logo::screen_idx#5 ← ++ (byte) render_logo::screen_idx#21 -- vbuyy=_inc_vbuyy iny - //SEG178 [95] (byte) render_logo::logo_idx#4 ← ++ (byte) render_logo::logo_idx#11 -- vbuz1=_inc_vbuz1 + //SEG179 [96] (byte) render_logo::logo_idx#4 ← ++ (byte) render_logo::logo_idx#11 -- vbuz1=_inc_vbuz1 inc logo_idx - //SEG179 [72] phi from render_logo::@10 to render_logo::@8 [phi:render_logo::@10->render_logo::@8] + //SEG180 [73] phi from render_logo::@10 to render_logo::@8 [phi:render_logo::@10->render_logo::@8] b8_from_b10: - //SEG180 [72] phi (byte) render_logo::screen_idx#21 = (byte) render_logo::screen_idx#5 [phi:render_logo::@10->render_logo::@8#0] -- register_copy - //SEG181 [72] phi (byte) render_logo::logo_idx#11 = (byte) render_logo::logo_idx#4 [phi:render_logo::@10->render_logo::@8#1] -- register_copy + //SEG181 [73] phi (byte) render_logo::screen_idx#21 = (byte) render_logo::screen_idx#5 [phi:render_logo::@10->render_logo::@8#0] -- register_copy + //SEG182 [73] phi (byte) render_logo::logo_idx#11 = (byte) render_logo::logo_idx#4 [phi:render_logo::@10->render_logo::@8#1] -- register_copy jmp b8 } -//SEG182 sin16s_gen2 +//SEG183 sin16s_gen2 // Generate signed word sinus table - with values in the range min-max. // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -6307,28 +6326,28 @@ sin16s_gen2: { .label sintab = 2 .label x = 5 .label i = 9 - //SEG183 [97] call div32u16u - //SEG184 [187] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG184 [98] call div32u16u + //SEG185 [188] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] div32u16u_from_sin16s_gen2: jsr div32u16u - //SEG185 [98] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + //SEG186 [99] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 jmp b2 - //SEG186 sin16s_gen2::@2 + //SEG187 sin16s_gen2::@2 b2: - //SEG187 [99] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 - //SEG188 [100] phi from sin16s_gen2::@2 to sin16s_gen2::@1 [phi:sin16s_gen2::@2->sin16s_gen2::@1] + //SEG188 [100] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 + //SEG189 [101] phi from sin16s_gen2::@2 to sin16s_gen2::@1 [phi:sin16s_gen2::@2->sin16s_gen2::@1] b1_from_b2: - //SEG189 [100] phi (word) sin16s_gen2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#0] -- vwuz1=vbuc1 + //SEG190 [101] phi (word) sin16s_gen2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#0] -- vwuz1=vbuc1 lda #0 sta i lda #0 sta i+1 - //SEG190 [100] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[XSIN_SIZE#0]) xsin#0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#1] -- pwsz1=pwsc1 + //SEG191 [101] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[XSIN_SIZE#0]) xsin#0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#1] -- pwsz1=pwsc1 lda #xsin sta sintab+1 - //SEG191 [100] phi (dword) sin16s_gen2::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#2] -- vduz1=vbuc1 + //SEG192 [101] phi (dword) sin16s_gen2::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -6337,15 +6356,15 @@ sin16s_gen2: { sta x+3 jmp b1 // u[4.28] - //SEG192 [100] phi from sin16s_gen2::@4 to sin16s_gen2::@1 [phi:sin16s_gen2::@4->sin16s_gen2::@1] + //SEG193 [101] phi from sin16s_gen2::@4 to sin16s_gen2::@1 [phi:sin16s_gen2::@4->sin16s_gen2::@1] b1_from_b4: - //SEG193 [100] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#0] -- register_copy - //SEG194 [100] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@4->sin16s_gen2::@1#1] -- register_copy - //SEG195 [100] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#2] -- register_copy + //SEG194 [101] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#0] -- register_copy + //SEG195 [101] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@4->sin16s_gen2::@1#1] -- register_copy + //SEG196 [101] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#2] -- register_copy jmp b1 - //SEG196 sin16s_gen2::@1 + //SEG197 sin16s_gen2::@1 b1: - //SEG197 [101] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 + //SEG198 [102] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -6354,42 +6373,42 @@ sin16s_gen2: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG198 [102] call sin16s + //SEG199 [103] call sin16s jsr sin16s - //SEG199 [103] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + //SEG200 [104] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 jmp b3 - //SEG200 sin16s_gen2::@3 + //SEG201 sin16s_gen2::@3 b3: - //SEG201 [104] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 - //SEG202 [105] call mul16s + //SEG202 [105] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 + //SEG203 [106] call mul16s jsr mul16s - //SEG203 [106] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 + //SEG204 [107] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 jmp b4 - //SEG204 sin16s_gen2::@4 + //SEG205 sin16s_gen2::@4 b4: - //SEG205 [107] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 - //SEG206 [108] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 + //SEG206 [108] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 + //SEG207 [109] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 lda _5+2 sta _6 lda _5+3 sta _6+1 - //SEG207 [109] (signed word~) sin16s_gen2::$8 ← (signed word)(word~) sin16s_gen2::$6 - //SEG208 [110] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 + //SEG208 [110] (signed word~) sin16s_gen2::$8 ← (signed word)(word~) sin16s_gen2::$6 + //SEG209 [111] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 ldy #0 lda _8 sta (sintab),y iny lda _8+1 sta (sintab),y - //SEG209 [111] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 - lda sintab + //SEG210 [112] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + lda #SIZEOF_SIGNED_WORD clc - adc #2 + adc sintab sta sintab bcc !+ inc sintab+1 !: - //SEG210 [112] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG211 [113] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -6403,12 +6422,12 @@ sin16s_gen2: { lda x+3 adc step+3 sta x+3 - //SEG211 [113] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 + //SEG212 [114] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG212 [114] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG213 [115] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>XSIN_SIZE bcc b1_from_b4 @@ -6418,12 +6437,12 @@ sin16s_gen2: { bcc b1_from_b4 !: jmp breturn - //SEG213 sin16s_gen2::@return + //SEG214 sin16s_gen2::@return breturn: - //SEG214 [115] return + //SEG215 [116] return rts } -//SEG215 mul16s +//SEG216 mul16s // Multiply of two signed words to a signed double word // Fixes offsets introduced by using unsigned multiplication // mul16s(signed word zeropage($17) a) @@ -6433,38 +6452,38 @@ mul16s: { .label m = $b .label return = $b .label a = $17 - //SEG216 [116] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + //SEG217 [117] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG217 [117] call mul16u - //SEG218 [127] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG218 [118] call mul16u + //SEG219 [128] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //SEG219 [127] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy - //SEG220 [127] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 + //SEG220 [128] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG221 [128] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl sta mul16u.b+1 jsr mul16u - //SEG221 [118] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG222 [119] (dword) mul16u::return#2 ← (dword) mul16u::res#2 jmp b4 - //SEG222 mul16s::@4 + //SEG223 mul16s::@4 b4: - //SEG223 [119] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - //SEG224 [120] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + //SEG224 [120] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + //SEG225 [121] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b1_from_b4 jmp b3 - //SEG225 mul16s::@3 + //SEG226 mul16s::@3 b3: - //SEG226 [121] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG227 [122] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _9 lda m+3 sta _9+1 - //SEG227 [122] (word~) mul16s::$16 ← (word~) mul16s::$9 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG228 [123] (word~) mul16s::$16 ← (word~) mul16s::$9 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 lda _16 sec sbc #sin16s_gen2.ampl sta _16+1 - //SEG228 [123] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG229 [124] (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 - //SEG229 [124] phi from mul16s::@3 mul16s::@4 to mul16s::@1 [phi:mul16s::@3/mul16s::@4->mul16s::@1] + //SEG230 [125] phi from mul16s::@3 mul16s::@4 to mul16s::@1 [phi:mul16s::@3/mul16s::@4->mul16s::@1] b1_from_b3: b1_from_b4: - //SEG230 [124] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@4->mul16s::@1#0] -- register_copy + //SEG231 [125] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@4->mul16s::@1#0] -- register_copy jmp b1 - //SEG231 mul16s::@1 + //SEG232 mul16s::@1 b1: jmp b2 - //SEG232 mul16s::@2 + //SEG233 mul16s::@2 b2: - //SEG233 [125] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG234 [126] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 jmp breturn - //SEG234 mul16s::@return + //SEG235 mul16s::@return breturn: - //SEG235 [126] return + //SEG236 [127] return rts } -//SEG236 mul16u +//SEG237 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage($11) a, word zeropage($f) b) mul16u: { @@ -6503,7 +6522,7 @@ mul16u: { .label res = $b .label return = $b .label b = $f - //SEG237 [128] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG238 [129] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -6511,42 +6530,42 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG238 [129] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG239 [130] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG239 [129] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG240 [129] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG240 [130] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG241 [130] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 lda #0 sta res lda #0 sta res+1 sta res+2 sta res+3 - //SEG241 [129] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG242 [130] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG242 mul16u::@1 + //SEG243 mul16u::@1 b1: - //SEG243 [130] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG244 [131] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 jmp breturn - //SEG244 mul16u::@return + //SEG245 mul16u::@return breturn: - //SEG245 [131] return + //SEG246 [132] return rts - //SEG246 mul16u::@2 + //SEG247 mul16u::@2 b2: - //SEG247 [132] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG248 [133] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG248 [133] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 + //SEG249 [134] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b2 jmp b4 - //SEG249 mul16u::@4 + //SEG250 mul16u::@4 b4: - //SEG250 [134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG251 [135] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -6560,30 +6579,30 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG251 [135] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] + //SEG252 [136] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] b3_from_b2: b3_from_b4: - //SEG252 [135] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy + //SEG253 [136] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy jmp b3 - //SEG253 mul16u::@3 + //SEG254 mul16u::@3 b3: - //SEG254 [136] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG255 [137] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG255 [137] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG256 [138] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG256 [129] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] + //SEG257 [130] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] b1_from_b3: - //SEG257 [129] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy - //SEG258 [129] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy - //SEG259 [129] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy + //SEG258 [130] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy + //SEG259 [130] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy + //SEG260 [130] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy jmp b1 } -//SEG260 sin16s +//SEG261 sin16s // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -6602,7 +6621,7 @@ sin16s: { .label x5_128 = $f .label sinx = $17 .label isUpper = 4 - //SEG261 [138] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG262 [139] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_u4f28>>$10 bcc b1_from_sin16s @@ -6620,9 +6639,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG262 sin16s::@4 + //SEG263 sin16s::@4 b4: - //SEG263 [139] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG264 [140] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 lda x sec sbc #PI_u4f28>>$10 sta x+3 - //SEG264 [140] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG265 [141] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //SEG265 [140] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG266 [141] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG266 [140] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG267 [141] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG267 [140] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG268 [141] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG268 [140] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG269 [141] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG269 [140] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG270 [141] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG270 sin16s::@1 + //SEG271 sin16s::@1 b1: - //SEG271 [141] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG272 [142] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_HALF_u4f28>>$10 bcc b2_from_b1 @@ -6670,9 +6689,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG272 sin16s::@5 + //SEG273 sin16s::@5 b5: - //SEG273 [142] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG274 [143] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 lda #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG274 [143] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG275 [144] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG275 [143] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG276 [144] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG276 sin16s::@2 + //SEG277 sin16s::@2 b2: - //SEG277 [144] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 + //SEG278 [145] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 ldy #3 !: asl _4 @@ -6702,80 +6721,80 @@ sin16s: { rol _4+3 dey bne !- - //SEG278 [145] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 + //SEG279 [146] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 lda _4+2 sta x1 lda _4+3 sta x1+1 - //SEG279 [146] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG280 [147] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG280 [147] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG281 [148] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG281 [148] call mulu16_sel - //SEG282 [178] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG282 [149] call mulu16_sel + //SEG283 [179] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG283 [178] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG284 [179] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG284 [178] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG285 [178] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG285 [179] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG286 [179] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG286 [149] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + //SEG287 [150] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 jmp b7 - //SEG287 sin16s::@7 + //SEG288 sin16s::@7 b7: - //SEG288 [150] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG289 [151] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 lda mulu16_sel.return sta x2 lda mulu16_sel.return+1 sta x2+1 - //SEG289 [151] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - //SEG290 [152] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG290 [152] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG291 [153] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG291 [153] call mulu16_sel - //SEG292 [178] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] + //SEG292 [154] call mulu16_sel + //SEG293 [179] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] mulu16_sel_from_b7: - //SEG293 [178] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG294 [179] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG294 [178] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy - //SEG295 [178] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy + //SEG295 [179] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy + //SEG296 [179] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG296 [154] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG297 [155] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return sta mulu16_sel.return_1 lda mulu16_sel.return+1 sta mulu16_sel.return_1+1 jmp b8 - //SEG297 sin16s::@8 + //SEG298 sin16s::@8 b8: - //SEG298 [155] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - //SEG299 [156] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - //SEG300 [157] call mulu16_sel - //SEG301 [178] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG299 [156] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG300 [157] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG301 [158] call mulu16_sel + //SEG302 [179] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG302 [178] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG303 [179] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG303 [178] phi (word) mulu16_sel::v2#5 = (dword/signed dword) $10000/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG304 [179] phi (word) mulu16_sel::v2#5 = (dword/signed dword) $10000/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG304 [178] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG305 [179] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG305 [158] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + //SEG306 [159] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 jmp b9 - //SEG306 sin16s::@9 + //SEG307 sin16s::@9 b9: - //SEG307 [159] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - //SEG308 [160] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG308 [160] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + //SEG309 [161] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -6783,56 +6802,56 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG309 [161] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - //SEG310 [162] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG310 [162] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG311 [163] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG311 [163] call mulu16_sel - //SEG312 [178] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG312 [164] call mulu16_sel + //SEG313 [179] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG313 [178] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG314 [179] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG314 [178] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy - //SEG315 [178] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG315 [179] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy + //SEG316 [179] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG316 [164] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG317 [165] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return sta mulu16_sel.return_10 lda mulu16_sel.return+1 sta mulu16_sel.return_10+1 jmp b10 - //SEG317 sin16s::@10 + //SEG318 sin16s::@10 b10: - //SEG318 [165] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - //SEG319 [166] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - //SEG320 [167] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG319 [166] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + //SEG320 [167] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG321 [168] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG321 [168] call mulu16_sel - //SEG322 [178] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG322 [169] call mulu16_sel + //SEG323 [179] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG323 [178] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG324 [179] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG324 [178] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG325 [178] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG325 [179] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG326 [179] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG326 [169] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + //SEG327 [170] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 jmp b11 - //SEG327 sin16s::@11 + //SEG328 sin16s::@11 b11: - //SEG328 [170] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - //SEG329 [171] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 + //SEG329 [171] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + //SEG330 [172] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 ldy #4 !: lsr x5_128+1 ror x5_128 dey bne !- - //SEG330 [172] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG331 [173] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -6840,14 +6859,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG331 [173] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 + //SEG332 [174] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b12 jmp b6 - //SEG332 sin16s::@6 + //SEG333 sin16s::@6 b6: - //SEG333 [174] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG334 [175] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda sinx eor #$ff @@ -6857,24 +6876,24 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG334 [175] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] + //SEG335 [176] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] b3_from_b12: b3_from_b6: - //SEG335 [175] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG336 [176] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG336 sin16s::@3 + //SEG337 sin16s::@3 b3: jmp breturn - //SEG337 sin16s::@return + //SEG338 sin16s::@return breturn: - //SEG338 [176] return + //SEG339 [177] return rts - //SEG339 sin16s::@12 + //SEG340 sin16s::@12 b12: - //SEG340 [177] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG341 [178] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 jmp b3_from_b12 } -//SEG341 mulu16_sel +//SEG342 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip // mulu16_sel(word zeropage($19) v1, word zeropage($f) v2, byte register(X) select) @@ -6886,24 +6905,24 @@ mulu16_sel: { .label return = $f .label return_1 = $19 .label return_10 = $19 - //SEG342 [179] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG343 [180] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG343 [180] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - //SEG344 [181] call mul16u - //SEG345 [127] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG344 [181] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + //SEG345 [182] call mul16u + //SEG346 [128] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] mul16u_from_mulu16_sel: - //SEG346 [127] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy - //SEG347 [127] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy + //SEG347 [128] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG348 [128] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - //SEG348 [182] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG349 [183] (dword) mul16u::return#3 ← (dword) mul16u::res#2 jmp b1 - //SEG349 mulu16_sel::@1 + //SEG350 mulu16_sel::@1 b1: - //SEG350 [183] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - //SEG351 [184] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + //SEG351 [184] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + //SEG352 [185] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -6914,64 +6933,64 @@ mulu16_sel: { dex bne !- !e: - //SEG352 [185] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG353 [186] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return lda _1+3 sta return+1 jmp breturn - //SEG353 mulu16_sel::@return + //SEG354 mulu16_sel::@return breturn: - //SEG354 [186] return + //SEG355 [187] return rts } -//SEG355 div32u16u +//SEG356 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { .label quotient_hi = $11 .label quotient_lo = $f .label return = $1b - //SEG356 [188] call divr16u - //SEG357 [197] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG357 [189] call divr16u + //SEG358 [198] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG358 [197] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG359 [198] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta divr16u.dividend lda #>PI2_u4f28>>$10 sta divr16u.dividend+1 - //SEG359 [197] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG360 [198] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 lda #0 sta divr16u.rem lda #0 sta divr16u.rem+1 jsr divr16u - //SEG360 [189] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG361 [190] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp b1 - //SEG361 div32u16u::@1 + //SEG362 div32u16u::@1 b1: - //SEG362 [190] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG363 [191] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return sta quotient_hi lda divr16u.return+1 sta quotient_hi+1 - //SEG363 [191] (word) divr16u::rem#4 ← (word) rem16u#1 - //SEG364 [192] call divr16u - //SEG365 [197] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] + //SEG364 [192] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG365 [193] call divr16u + //SEG366 [198] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] divr16u_from_b1: - //SEG366 [197] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 + //SEG367 [198] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG367 [197] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy + //SEG368 [198] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy jsr divr16u - //SEG368 [193] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG369 [194] (word) divr16u::return#3 ← (word) divr16u::return#0 jmp b2 - //SEG369 div32u16u::@2 + //SEG370 div32u16u::@2 b2: - //SEG370 [194] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - //SEG371 [195] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG371 [195] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG372 [196] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 lda quotient_hi sta return+2 lda quotient_hi+1 @@ -6981,12 +7000,12 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG372 div32u16u::@return + //SEG373 div32u16u::@return breturn: - //SEG373 [196] return + //SEG374 [197] return rts } -//SEG374 divr16u +//SEG375 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -6997,58 +7016,58 @@ divr16u: { .label dividend = 9 .label quotient = $f .label return = $f - //SEG375 [198] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG376 [199] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG376 [198] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG377 [199] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG377 [198] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG378 [199] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #0 sta quotient lda #0 sta quotient+1 - //SEG378 [198] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG379 [198] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG379 [199] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG380 [199] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG380 [198] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG381 [199] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG381 [198] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG382 [198] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG383 [198] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG384 [198] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG382 [199] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG383 [199] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG384 [199] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG385 [199] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG385 divr16u::@1 + //SEG386 divr16u::@1 b1: - //SEG386 [199] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG387 [200] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG387 [200] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG388 [201] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG388 [201] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 -- vbuaa=vbuaa_band_vbuc1 + //SEG389 [202] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG389 [202] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG390 [203] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b1 jmp b4 - //SEG390 divr16u::@4 + //SEG391 divr16u::@4 b4: - //SEG391 [203] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG392 [204] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG392 [204] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG393 [205] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG393 [204] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG394 [205] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG394 divr16u::@2 + //SEG395 divr16u::@2 b2: - //SEG395 [205] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG396 [206] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG396 [206] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG397 [207] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG397 [207] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG398 [208] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>XSIN_SIZE bcc b3_from_b2 @@ -7058,14 +7077,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG398 divr16u::@5 + //SEG399 divr16u::@5 b5: - //SEG399 [208] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG400 [209] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG400 [209] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG401 [210] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #XSIN_SIZE sta rem+1 - //SEG401 [210] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG402 [211] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG402 [210] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG403 [210] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG403 [211] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG404 [211] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG404 divr16u::@3 + //SEG405 divr16u::@3 b3: - //SEG405 [211] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG406 [212] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG406 [212] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG407 [213] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b3 jmp b6 - //SEG407 divr16u::@6 + //SEG408 divr16u::@6 b6: - //SEG408 [213] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG409 [214] (word) rem16u#1 ← (word) divr16u::rem#11 jmp breturn - //SEG409 divr16u::@return + //SEG410 divr16u::@return breturn: - //SEG410 [214] return + //SEG411 [215] return rts } -//SEG411 fill +//SEG412 fill // Fill some memory with a value // fill(byte register(X) val) fill: { .label end = 9 .label addr = 2 - //SEG412 [216] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) $3e8 -- pbuz1=pbuz2_plus_vwuc1 + //SEG413 [217] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) $3e8 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -7110,23 +7129,23 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG413 [217] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG414 [218] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] b1_from_fill: b1_from_b1: - //SEG414 [217] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG415 [218] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG415 fill::@1 + //SEG416 fill::@1 b1: - //SEG416 [218] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx + //SEG417 [219] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (addr),y - //SEG417 [219] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG418 [220] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG418 [220] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG419 [221] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 lda addr+1 cmp end+1 bne b1_from_b1 @@ -7134,9 +7153,9 @@ fill: { cmp end bne b1_from_b1 jmp breturn - //SEG419 fill::@return + //SEG420 fill::@return breturn: - //SEG420 [221] return + //SEG421 [222] return rts } .align $100 @@ -7458,6 +7477,7 @@ FINAL SYMBOL TABLE (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012 (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400 +(const byte) SIZEOF_SIGNED_WORD SIZEOF_SIGNED_WORD = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) VIC_MCM (const byte) VIC_MCM#0 VIC_MCM = (byte/signed byte/word/signed word/dword/signed dword) $10 (byte) WHITE @@ -7528,6 +7548,7 @@ FINAL SYMBOL TABLE (byte) fill::val#3 reg byte x 1.8333333333333333 (void()) loop() (signed word*~) loop::$1 $1 zp ZP_WORD:9 22.0 +(word) loop::$5 $5 zp ZP_WORD:9 22.0 (label) loop::@1 (label) loop::@2 (label) loop::@3 @@ -7782,7 +7803,7 @@ FINAL SYMBOL TABLE (signed word[XSIN_SIZE#0]) xsin (const signed word[XSIN_SIZE#0]) xsin#0 xsin = { fill( XSIN_SIZE#0, 0) } (word) xsin_idx -(word) xsin_idx#11 xsin_idx zp ZP_WORD:2 4.714285714285714 +(word) xsin_idx#11 xsin_idx zp ZP_WORD:2 4.125 (word) xsin_idx#19 xsin_idx zp ZP_WORD:2 11.0 (word) xsin_idx#3 xsin_idx zp ZP_WORD:2 11.0 @@ -7792,7 +7813,7 @@ reg byte y [ render_logo::screen_idx#10 render_logo::screen_idx#4 render_logo::s zp ZP_BYTE:4 [ render_logo::logo_idx#10 render_logo::logo_idx#3 render_logo::logo_idx#11 render_logo::logo_idx#14 render_logo::logo_idx#4 sin16s::isUpper#2 render_logo::x_char#0 ] reg byte y [ render_logo::screen_idx#15 render_logo::screen_idx#21 render_logo::screen_idx#5 render_logo::screen_idx#6 ] zp ZP_DWORD:5 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] -zp ZP_WORD:9 [ sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 loop::$1 loop::xpos#0 render_logo::xpos#0 fill::end#0 ] +zp ZP_WORD:9 [ sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 loop::$5 loop::$1 loop::xpos#0 render_logo::xpos#0 fill::end#0 ] zp ZP_DWORD:11 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 sin16s_gen2::$5 mulu16_sel::$0 mulu16_sel::$1 sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$4 ] zp ZP_WORD:15 [ mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 render_logo::$3 sin16s_gen2::$6 sin16s_gen2::$8 mul16s::$9 mul16s::$16 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] zp ZP_WORD:17 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 div32u16u::quotient_hi#0 ] @@ -7824,7 +7845,7 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER -Score: 43910 +Score: 44020 //SEG0 File Comments //SEG1 Basic Upstart @@ -7832,6 +7853,7 @@ Score: 43910 :BasicUpstart(main) .pc = $80d "Program" //SEG2 Global Constants & labels + .const SIZEOF_SIGNED_WORD = 2 .label RASTER = $d012 .label BORDERCOL = $d020 .label BGCOL = $d021 @@ -7891,10 +7913,10 @@ main: { lda #VIC_MCM sta D016 //SEG22 [13] call fill - //SEG23 [215] phi from main::@3 to fill [phi:main::@3->fill] - //SEG24 [215] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuxx=vbuc1 + //SEG23 [216] phi from main::@3 to fill [phi:main::@3->fill] + //SEG24 [216] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuxx=vbuc1 ldx #BLACK - //SEG25 [215] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 + //SEG25 [216] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 lda #SCREEN @@ -7903,10 +7925,10 @@ main: { //SEG26 [14] phi from main::@3 to main::@4 [phi:main::@3->main::@4] //SEG27 main::@4 //SEG28 [15] call fill - //SEG29 [215] phi from main::@4 to fill [phi:main::@4->fill] - //SEG30 [215] phi (byte) fill::val#3 = (const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@4->fill#0] -- vbuxx=vbuc1 + //SEG29 [216] phi from main::@4 to fill [phi:main::@4->fill] + //SEG30 [216] phi (byte) fill::val#3 = (const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@4->fill#0] -- vbuxx=vbuc1 ldx #WHITE|8 - //SEG31 [215] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 + //SEG31 [216] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 lda #COLS @@ -7930,7 +7952,7 @@ main: { //SEG40 [20] phi from main::@1 to main::@2 [phi:main::@1->main::@2] //SEG41 main::@2 //SEG42 [21] call sin16s_gen2 - //SEG43 [96] phi from main::@2 to sin16s_gen2 [phi:main::@2->sin16s_gen2] + //SEG43 [97] phi from main::@2 to sin16s_gen2 [phi:main::@2->sin16s_gen2] jsr sin16s_gen2 //SEG44 [22] phi from main::@2 to main::@5 [phi:main::@2->main::@5] //SEG45 main::@5 @@ -7944,6 +7966,7 @@ main: { //SEG50 loop loop: { .label _1 = 9 + .label _5 = 9 .label xpos = 9 //SEG51 [26] phi from loop to loop::@1 [phi:loop->loop::@1] //SEG52 [26] phi (word) xsin_idx#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop->loop::@1#0] -- vwuz1=vbuc1 @@ -7962,15 +7985,22 @@ loop: { //SEG56 loop::@3 //SEG57 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG58 [29] (signed word*~) loop::$1 ← (const signed word[XSIN_SIZE#0]) xsin#0 + (word) xsin_idx#11 -- pwsz1=pwsc1_plus_vwuz2 + //SEG58 [29] (word) loop::$5 ← (word) xsin_idx#11 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz2_rol_1 lda xsin_idx + asl + sta _5 + lda xsin_idx+1 + rol + sta _5+1 + //SEG59 [30] (signed word*~) loop::$1 ← (const signed word[XSIN_SIZE#0]) xsin#0 + (word) loop::$5 -- pwsz1=pwsc1_plus_vwuz1 clc + lda _1 adc #xsin sta _1+1 - //SEG59 [30] (signed word) loop::xpos#0 ← *((signed word*~) loop::$1) -- vwsz1=_deref_pwsz1 + //SEG60 [31] (signed word) loop::xpos#0 ← *((signed word*~) loop::$1) -- vwsz1=_deref_pwsz1 ldy #0 lda (xpos),y tax @@ -7978,58 +8008,55 @@ loop: { lda (xpos),y stx xpos sta xpos+1 - //SEG60 [31] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 - //SEG61 [32] call render_logo + //SEG61 [32] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 + //SEG62 [33] call render_logo jsr render_logo - //SEG62 loop::@5 - //SEG63 [33] (word) xsin_idx#3 ← (word) xsin_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vwuz1=vwuz1_plus_2 - lda xsin_idx - clc - adc #2 - sta xsin_idx - bcc !+ + //SEG63 loop::@5 + //SEG64 [34] (word) xsin_idx#3 ← ++ (word) xsin_idx#11 -- vwuz1=_inc_vwuz1 + inc xsin_idx + bne !+ inc xsin_idx+1 !: - //SEG64 [34] if((word) xsin_idx#3!=(const word) XSIN_SIZE#0*(byte/signed byte/word/signed word/dword/signed dword) 2) goto loop::@6 -- vwuz1_neq_vwuc1_then_la1 + //SEG65 [35] if((word) xsin_idx#3!=(const word) XSIN_SIZE#0) goto loop::@6 -- vwuz1_neq_vwuc1_then_la1 lda xsin_idx+1 - cmp #>XSIN_SIZE*2 + cmp #>XSIN_SIZE bne b4 lda xsin_idx - cmp #loop::@4] - //SEG66 [35] phi (word) xsin_idx#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@5->loop::@4#0] -- vwuz1=vbuc1 + //SEG66 [36] phi from loop::@5 to loop::@4 [phi:loop::@5->loop::@4] + //SEG67 [36] phi (word) xsin_idx#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:loop::@5->loop::@4#0] -- vwuz1=vbuc1 lda #0 sta xsin_idx sta xsin_idx+1 - //SEG67 loop::@4 + //SEG68 loop::@4 b4: - //SEG68 [36] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG69 [37] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG69 [26] phi from loop::@4 to loop::@1 [phi:loop::@4->loop::@1] - //SEG70 [26] phi (word) xsin_idx#11 = (word) xsin_idx#19 [phi:loop::@4->loop::@1#0] -- register_copy + //SEG70 [26] phi from loop::@4 to loop::@1 [phi:loop::@4->loop::@1] + //SEG71 [26] phi (word) xsin_idx#11 = (word) xsin_idx#19 [phi:loop::@4->loop::@1#0] -- register_copy jmp b1 - //SEG71 [37] phi from loop::@5 to loop::@6 [phi:loop::@5->loop::@6] - //SEG72 loop::@6 - //SEG73 [35] phi from loop::@6 to loop::@4 [phi:loop::@6->loop::@4] - //SEG74 [35] phi (word) xsin_idx#19 = (word) xsin_idx#3 [phi:loop::@6->loop::@4#0] -- register_copy + //SEG72 [38] phi from loop::@5 to loop::@6 [phi:loop::@5->loop::@6] + //SEG73 loop::@6 + //SEG74 [36] phi from loop::@6 to loop::@4 [phi:loop::@6->loop::@4] + //SEG75 [36] phi (word) xsin_idx#19 = (word) xsin_idx#3 [phi:loop::@6->loop::@4#0] -- register_copy } -//SEG75 render_logo +//SEG76 render_logo // render_logo(signed word zeropage(9) xpos) render_logo: { .label _3 = $f .label xpos = 9 .label x_char = 4 .label logo_idx = 4 - //SEG76 [38] (byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos#0 -- vbuaa=_byte_vwsz1 + //SEG77 [39] (byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos#0 -- vbuaa=_byte_vwsz1 lda xpos - //SEG77 [39] (byte~) render_logo::$1 ← (byte~) render_logo::$0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuaa_band_vbuc1 + //SEG78 [40] (byte~) render_logo::$1 ← (byte~) render_logo::$0 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuaa_band_vbuc1 and #7 - //SEG78 [40] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1 -- vbuaa=vbuc1_bor_vbuaa + //SEG79 [41] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1 -- vbuaa=vbuc1_bor_vbuaa ora #VIC_MCM - //SEG79 [41] *((const byte*) D016#0) ← (byte~) render_logo::$2 -- _deref_pbuc1=vbuaa + //SEG80 [42] *((const byte*) D016#0) ← (byte~) render_logo::$2 -- _deref_pbuc1=vbuaa sta D016 - //SEG80 [42] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwsz1=vwsz2_ror_3 + //SEG81 [43] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwsz1=vwsz2_ror_3 lda xpos+1 cmp #$80 ror @@ -8045,210 +8072,210 @@ render_logo: { cmp #$80 ror _3+1 ror _3 - //SEG81 [43] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3 -- vbsz1=_sbyte_vwsz2 + //SEG82 [44] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3 -- vbsz1=_sbyte_vwsz2 lda _3 sta x_char - //SEG82 [44] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 -- vwsz1_lt_0_then_la1 + //SEG83 [45] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 -- vwsz1_lt_0_then_la1 lda xpos+1 bmi b1 - //SEG83 [45] phi from render_logo to render_logo::@2 [phi:render_logo->render_logo::@2] - //SEG84 [45] phi (byte) render_logo::screen_idx#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo->render_logo::@2#0] -- vbuyy=vbuc1 + //SEG84 [46] phi from render_logo to render_logo::@2 [phi:render_logo->render_logo::@2] + //SEG85 [46] phi (byte) render_logo::screen_idx#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo->render_logo::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG85 render_logo::@2 + //SEG86 render_logo::@2 b2: - //SEG86 [46] if((byte) render_logo::screen_idx#18!=(byte)(signed byte) render_logo::x_char#0) goto render_logo::@3 -- vbuyy_neq_vbuz1_then_la1 + //SEG87 [47] if((byte) render_logo::screen_idx#18!=(byte)(signed byte) render_logo::x_char#0) goto render_logo::@3 -- vbuyy_neq_vbuz1_then_la1 cpy x_char bne b3 - //SEG87 [47] phi from render_logo::@2 to render_logo::@5 [phi:render_logo::@2->render_logo::@5] - //SEG88 [47] phi (byte) render_logo::logo_idx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@2->render_logo::@5#0] -- vbuz1=vbuc1 + //SEG88 [48] phi from render_logo::@2 to render_logo::@5 [phi:render_logo::@2->render_logo::@5] + //SEG89 [48] phi (byte) render_logo::logo_idx#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@2->render_logo::@5#0] -- vbuz1=vbuc1 lda #0 sta logo_idx - //SEG89 [47] phi (byte) render_logo::screen_idx#10 = (byte) render_logo::screen_idx#18 [phi:render_logo::@2->render_logo::@5#1] -- register_copy - //SEG90 render_logo::@5 + //SEG90 [48] phi (byte) render_logo::screen_idx#10 = (byte) render_logo::screen_idx#18 [phi:render_logo::@2->render_logo::@5#1] -- register_copy + //SEG91 render_logo::@5 b5: - //SEG91 [48] if((byte) render_logo::screen_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@6 -- vbuyy_neq_vbuc1_then_la1 + //SEG92 [49] if((byte) render_logo::screen_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@6 -- vbuyy_neq_vbuc1_then_la1 cpy #$28 bne b6 - //SEG92 render_logo::@return - //SEG93 [49] return + //SEG93 render_logo::@return + //SEG94 [50] return rts - //SEG94 render_logo::@6 + //SEG95 render_logo::@6 b6: - //SEG95 [50] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#10) ← (byte) render_logo::logo_idx#10 -- pbuc1_derefidx_vbuyy=vbuz1 + //SEG96 [51] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#10) ← (byte) render_logo::logo_idx#10 -- pbuc1_derefidx_vbuyy=vbuz1 lda logo_idx sta SCREEN,y - //SEG96 render_logo::@15_1 - //SEG97 [51] (byte/signed word/word/dword/signed dword~) render_logo::$34 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_vbuc1 + //SEG97 render_logo::@15_1 + //SEG98 [52] (byte/signed word/word/dword/signed dword~) render_logo::$34 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_vbuc1 lda #$28*1 clc adc logo_idx - //SEG98 [52] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$34 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG99 [53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$34 -- pbuc1_derefidx_vbuyy=vbuaa sta SCREEN+$28*1,y - //SEG99 render_logo::@15_2 - //SEG100 [53] (byte/signed word/word/dword/signed dword~) render_logo::$38 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuz1_plus_vbuc1 + //SEG100 render_logo::@15_2 + //SEG101 [54] (byte/signed word/word/dword/signed dword~) render_logo::$38 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuz1_plus_vbuc1 lda #$28*2 clc adc logo_idx - //SEG101 [54] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$38 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG102 [55] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$38 -- pbuc1_derefidx_vbuyy=vbuaa sta SCREEN+$28*2,y - //SEG102 render_logo::@15_3 - //SEG103 [55] (byte/signed word/word/dword/signed dword~) render_logo::$42 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_plus_vbuc1 + //SEG103 render_logo::@15_3 + //SEG104 [56] (byte/signed word/word/dword/signed dword~) render_logo::$42 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_plus_vbuc1 lda #$28*3 clc adc logo_idx - //SEG104 [56] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$42 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG105 [57] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$42 -- pbuc1_derefidx_vbuyy=vbuaa sta SCREEN+$28*3,y - //SEG105 render_logo::@15_4 - //SEG106 [57] (byte/signed word/word/dword/signed dword~) render_logo::$46 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_plus_vbuc1 + //SEG106 render_logo::@15_4 + //SEG107 [58] (byte/signed word/word/dword/signed dword~) render_logo::$46 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_plus_vbuc1 lda #$28*4 clc adc logo_idx - //SEG107 [58] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$46 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG108 [59] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$46 -- pbuc1_derefidx_vbuyy=vbuaa sta SCREEN+$28*4,y - //SEG108 render_logo::@15_5 - //SEG109 [59] (byte/signed word/word/dword/signed dword~) render_logo::$50 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuaa=vbuz1_plus_vbuc1 + //SEG109 render_logo::@15_5 + //SEG110 [60] (byte/signed word/word/dword/signed dword~) render_logo::$50 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuaa=vbuz1_plus_vbuc1 lda #$28*5 clc adc logo_idx - //SEG110 [60] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$50 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG111 [61] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$50 -- pbuc1_derefidx_vbuyy=vbuaa sta SCREEN+$28*5,y - //SEG111 render_logo::@7 - //SEG112 [61] (byte) render_logo::screen_idx#4 ← ++ (byte) render_logo::screen_idx#10 -- vbuyy=_inc_vbuyy + //SEG112 render_logo::@7 + //SEG113 [62] (byte) render_logo::screen_idx#4 ← ++ (byte) render_logo::screen_idx#10 -- vbuyy=_inc_vbuyy iny - //SEG113 [62] (byte) render_logo::logo_idx#3 ← ++ (byte) render_logo::logo_idx#10 -- vbuz1=_inc_vbuz1 + //SEG114 [63] (byte) render_logo::logo_idx#3 ← ++ (byte) render_logo::logo_idx#10 -- vbuz1=_inc_vbuz1 inc logo_idx - //SEG114 [47] phi from render_logo::@7 to render_logo::@5 [phi:render_logo::@7->render_logo::@5] - //SEG115 [47] phi (byte) render_logo::logo_idx#10 = (byte) render_logo::logo_idx#3 [phi:render_logo::@7->render_logo::@5#0] -- register_copy - //SEG116 [47] phi (byte) render_logo::screen_idx#10 = (byte) render_logo::screen_idx#4 [phi:render_logo::@7->render_logo::@5#1] -- register_copy + //SEG115 [48] phi from render_logo::@7 to render_logo::@5 [phi:render_logo::@7->render_logo::@5] + //SEG116 [48] phi (byte) render_logo::logo_idx#10 = (byte) render_logo::logo_idx#3 [phi:render_logo::@7->render_logo::@5#0] -- register_copy + //SEG117 [48] phi (byte) render_logo::screen_idx#10 = (byte) render_logo::screen_idx#4 [phi:render_logo::@7->render_logo::@5#1] -- register_copy jmp b5 - //SEG117 render_logo::@3 + //SEG118 render_logo::@3 b3: - //SEG118 [63] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG119 [64] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #0 sta SCREEN,y - //SEG119 render_logo::@7_1 - //SEG120 [64] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG120 render_logo::@7_1 + //SEG121 [65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 sta SCREEN+$28*1,y - //SEG121 render_logo::@7_2 - //SEG122 [65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG122 render_logo::@7_2 + //SEG123 [66] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 sta SCREEN+$28*2,y - //SEG123 render_logo::@7_3 - //SEG124 [66] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG124 render_logo::@7_3 + //SEG125 [67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 sta SCREEN+$28*3,y - //SEG125 render_logo::@7_4 - //SEG126 [67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG126 render_logo::@7_4 + //SEG127 [68] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 sta SCREEN+$28*4,y - //SEG127 render_logo::@7_5 - //SEG128 [68] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG128 render_logo::@7_5 + //SEG129 [69] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 sta SCREEN+$28*5,y - //SEG129 render_logo::@4 - //SEG130 [69] (byte) render_logo::screen_idx#3 ← ++ (byte) render_logo::screen_idx#18 -- vbuyy=_inc_vbuyy + //SEG130 render_logo::@4 + //SEG131 [70] (byte) render_logo::screen_idx#3 ← ++ (byte) render_logo::screen_idx#18 -- vbuyy=_inc_vbuyy iny - //SEG131 [45] phi from render_logo::@4 to render_logo::@2 [phi:render_logo::@4->render_logo::@2] - //SEG132 [45] phi (byte) render_logo::screen_idx#18 = (byte) render_logo::screen_idx#3 [phi:render_logo::@4->render_logo::@2#0] -- register_copy + //SEG132 [46] phi from render_logo::@4 to render_logo::@2 [phi:render_logo::@4->render_logo::@2] + //SEG133 [46] phi (byte) render_logo::screen_idx#18 = (byte) render_logo::screen_idx#3 [phi:render_logo::@4->render_logo::@2#0] -- register_copy jmp b2 - //SEG133 render_logo::@1 + //SEG134 render_logo::@1 b1: - //SEG134 [70] (signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#0 -- vbsaa=_neg_vbsz1 + //SEG135 [71] (signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#0 -- vbsaa=_neg_vbsz1 lda x_char eor #$ff clc adc #1 - //SEG135 [71] (byte~) render_logo::logo_idx#14 ← (byte)(signed byte~) render_logo::$17 -- vbuz1=vbuaa + //SEG136 [72] (byte~) render_logo::logo_idx#14 ← (byte)(signed byte~) render_logo::$17 -- vbuz1=vbuaa sta logo_idx - //SEG136 [72] phi from render_logo::@1 to render_logo::@8 [phi:render_logo::@1->render_logo::@8] - //SEG137 [72] phi (byte) render_logo::screen_idx#21 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@1->render_logo::@8#0] -- vbuyy=vbuc1 + //SEG137 [73] phi from render_logo::@1 to render_logo::@8 [phi:render_logo::@1->render_logo::@8] + //SEG138 [73] phi (byte) render_logo::screen_idx#21 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_logo::@1->render_logo::@8#0] -- vbuyy=vbuc1 ldy #0 - //SEG138 [72] phi (byte) render_logo::logo_idx#11 = (byte~) render_logo::logo_idx#14 [phi:render_logo::@1->render_logo::@8#1] -- register_copy - //SEG139 render_logo::@8 + //SEG139 [73] phi (byte) render_logo::logo_idx#11 = (byte~) render_logo::logo_idx#14 [phi:render_logo::@1->render_logo::@8#1] -- register_copy + //SEG140 render_logo::@8 b8: - //SEG140 [73] if((byte) render_logo::logo_idx#11!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@9 -- vbuz1_neq_vbuc1_then_la1 + //SEG141 [74] if((byte) render_logo::logo_idx#11!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@9 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp logo_idx bne b9 - //SEG141 [74] phi from render_logo::@13 render_logo::@8 to render_logo::@11 [phi:render_logo::@13/render_logo::@8->render_logo::@11] - //SEG142 [74] phi (byte) render_logo::screen_idx#15 = (byte) render_logo::screen_idx#6 [phi:render_logo::@13/render_logo::@8->render_logo::@11#0] -- register_copy - //SEG143 render_logo::@11 + //SEG142 [75] phi from render_logo::@13 render_logo::@8 to render_logo::@11 [phi:render_logo::@13/render_logo::@8->render_logo::@11] + //SEG143 [75] phi (byte) render_logo::screen_idx#15 = (byte) render_logo::screen_idx#6 [phi:render_logo::@13/render_logo::@8->render_logo::@11#0] -- register_copy + //SEG144 render_logo::@11 b11: - //SEG144 [75] if((byte) render_logo::screen_idx#15!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@12 -- vbuyy_neq_vbuc1_then_la1 + //SEG145 [76] if((byte) render_logo::screen_idx#15!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@12 -- vbuyy_neq_vbuc1_then_la1 cpy #$28 bne b12 rts - //SEG145 render_logo::@12 + //SEG146 render_logo::@12 b12: - //SEG146 [76] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG147 [77] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 lda #0 sta SCREEN,y - //SEG147 render_logo::@32_1 - //SEG148 [77] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG148 render_logo::@32_1 + //SEG149 [78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 sta SCREEN+$28*1,y - //SEG149 render_logo::@32_2 - //SEG150 [78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG150 render_logo::@32_2 + //SEG151 [79] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 sta SCREEN+$28*2,y - //SEG151 render_logo::@32_3 - //SEG152 [79] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG152 render_logo::@32_3 + //SEG153 [80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 sta SCREEN+$28*3,y - //SEG153 render_logo::@32_4 - //SEG154 [80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG154 render_logo::@32_4 + //SEG155 [81] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 sta SCREEN+$28*4,y - //SEG155 render_logo::@32_5 - //SEG156 [81] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 + //SEG156 render_logo::@32_5 + //SEG157 [82] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuyy=vbuc2 sta SCREEN+$28*5,y - //SEG157 render_logo::@13 - //SEG158 [82] (byte) render_logo::screen_idx#6 ← ++ (byte) render_logo::screen_idx#15 -- vbuyy=_inc_vbuyy + //SEG158 render_logo::@13 + //SEG159 [83] (byte) render_logo::screen_idx#6 ← ++ (byte) render_logo::screen_idx#15 -- vbuyy=_inc_vbuyy iny jmp b11 - //SEG159 render_logo::@9 + //SEG160 render_logo::@9 b9: - //SEG160 [83] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#21) ← (byte) render_logo::logo_idx#11 -- pbuc1_derefidx_vbuyy=vbuz1 + //SEG161 [84] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#21) ← (byte) render_logo::logo_idx#11 -- pbuc1_derefidx_vbuyy=vbuz1 lda logo_idx sta SCREEN,y - //SEG161 render_logo::@24_1 - //SEG162 [84] (byte/signed word/word/dword/signed dword~) render_logo::$80 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_vbuc1 + //SEG162 render_logo::@24_1 + //SEG163 [85] (byte/signed word/word/dword/signed dword~) render_logo::$80 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_vbuc1 lda #$28*1 clc adc logo_idx - //SEG163 [85] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$80 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG164 [86] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$80 -- pbuc1_derefidx_vbuyy=vbuaa sta SCREEN+$28*1,y - //SEG164 render_logo::@24_2 - //SEG165 [86] (byte/signed word/word/dword/signed dword~) render_logo::$84 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuz1_plus_vbuc1 + //SEG165 render_logo::@24_2 + //SEG166 [87] (byte/signed word/word/dword/signed dword~) render_logo::$84 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuaa=vbuz1_plus_vbuc1 lda #$28*2 clc adc logo_idx - //SEG166 [87] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$84 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG167 [88] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$84 -- pbuc1_derefidx_vbuyy=vbuaa sta SCREEN+$28*2,y - //SEG167 render_logo::@24_3 - //SEG168 [88] (byte/signed word/word/dword/signed dword~) render_logo::$88 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_plus_vbuc1 + //SEG168 render_logo::@24_3 + //SEG169 [89] (byte/signed word/word/dword/signed dword~) render_logo::$88 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_plus_vbuc1 lda #$28*3 clc adc logo_idx - //SEG169 [89] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$88 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG170 [90] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$88 -- pbuc1_derefidx_vbuyy=vbuaa sta SCREEN+$28*3,y - //SEG170 render_logo::@24_4 - //SEG171 [90] (byte/signed word/word/dword/signed dword~) render_logo::$92 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_plus_vbuc1 + //SEG171 render_logo::@24_4 + //SEG172 [91] (byte/signed word/word/dword/signed dword~) render_logo::$92 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_plus_vbuc1 lda #$28*4 clc adc logo_idx - //SEG172 [91] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$92 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG173 [92] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$92 -- pbuc1_derefidx_vbuyy=vbuaa sta SCREEN+$28*4,y - //SEG173 render_logo::@24_5 - //SEG174 [92] (byte/signed word/word/dword/signed dword~) render_logo::$96 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuaa=vbuz1_plus_vbuc1 + //SEG174 render_logo::@24_5 + //SEG175 [93] (byte/signed word/word/dword/signed dword~) render_logo::$96 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 -- vbuaa=vbuz1_plus_vbuc1 lda #$28*5 clc adc logo_idx - //SEG175 [93] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$96 -- pbuc1_derefidx_vbuyy=vbuaa + //SEG176 [94] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$96 -- pbuc1_derefidx_vbuyy=vbuaa sta SCREEN+$28*5,y - //SEG176 render_logo::@10 - //SEG177 [94] (byte) render_logo::screen_idx#5 ← ++ (byte) render_logo::screen_idx#21 -- vbuyy=_inc_vbuyy + //SEG177 render_logo::@10 + //SEG178 [95] (byte) render_logo::screen_idx#5 ← ++ (byte) render_logo::screen_idx#21 -- vbuyy=_inc_vbuyy iny - //SEG178 [95] (byte) render_logo::logo_idx#4 ← ++ (byte) render_logo::logo_idx#11 -- vbuz1=_inc_vbuz1 + //SEG179 [96] (byte) render_logo::logo_idx#4 ← ++ (byte) render_logo::logo_idx#11 -- vbuz1=_inc_vbuz1 inc logo_idx - //SEG179 [72] phi from render_logo::@10 to render_logo::@8 [phi:render_logo::@10->render_logo::@8] - //SEG180 [72] phi (byte) render_logo::screen_idx#21 = (byte) render_logo::screen_idx#5 [phi:render_logo::@10->render_logo::@8#0] -- register_copy - //SEG181 [72] phi (byte) render_logo::logo_idx#11 = (byte) render_logo::logo_idx#4 [phi:render_logo::@10->render_logo::@8#1] -- register_copy + //SEG180 [73] phi from render_logo::@10 to render_logo::@8 [phi:render_logo::@10->render_logo::@8] + //SEG181 [73] phi (byte) render_logo::screen_idx#21 = (byte) render_logo::screen_idx#5 [phi:render_logo::@10->render_logo::@8#0] -- register_copy + //SEG182 [73] phi (byte) render_logo::logo_idx#11 = (byte) render_logo::logo_idx#4 [phi:render_logo::@10->render_logo::@8#1] -- register_copy jmp b8 } -//SEG182 sin16s_gen2 +//SEG183 sin16s_gen2 // Generate signed word sinus table - with values in the range min-max. // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) @@ -8264,36 +8291,36 @@ sin16s_gen2: { .label sintab = 2 .label x = 5 .label i = 9 - //SEG183 [97] call div32u16u - //SEG184 [187] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG184 [98] call div32u16u + //SEG185 [188] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] jsr div32u16u - //SEG185 [98] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 - //SEG186 sin16s_gen2::@2 - //SEG187 [99] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 - //SEG188 [100] phi from sin16s_gen2::@2 to sin16s_gen2::@1 [phi:sin16s_gen2::@2->sin16s_gen2::@1] - //SEG189 [100] phi (word) sin16s_gen2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#0] -- vwuz1=vbuc1 + //SEG186 [99] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 + //SEG187 sin16s_gen2::@2 + //SEG188 [100] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 + //SEG189 [101] phi from sin16s_gen2::@2 to sin16s_gen2::@1 [phi:sin16s_gen2::@2->sin16s_gen2::@1] + //SEG190 [101] phi (word) sin16s_gen2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#0] -- vwuz1=vbuc1 lda #0 sta i sta i+1 - //SEG190 [100] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[XSIN_SIZE#0]) xsin#0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#1] -- pwsz1=pwsc1 + //SEG191 [101] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word[XSIN_SIZE#0]) xsin#0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#1] -- pwsz1=pwsc1 lda #xsin sta sintab+1 - //SEG191 [100] phi (dword) sin16s_gen2::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#2] -- vduz1=vbuc1 + //SEG192 [101] phi (dword) sin16s_gen2::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen2::@2->sin16s_gen2::@1#2] -- vduz1=vbuc1 lda #0 sta x sta x+1 sta x+2 sta x+3 // u[4.28] - //SEG192 [100] phi from sin16s_gen2::@4 to sin16s_gen2::@1 [phi:sin16s_gen2::@4->sin16s_gen2::@1] - //SEG193 [100] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#0] -- register_copy - //SEG194 [100] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@4->sin16s_gen2::@1#1] -- register_copy - //SEG195 [100] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#2] -- register_copy - //SEG196 sin16s_gen2::@1 + //SEG193 [101] phi from sin16s_gen2::@4 to sin16s_gen2::@1 [phi:sin16s_gen2::@4->sin16s_gen2::@1] + //SEG194 [101] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#0] -- register_copy + //SEG195 [101] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@4->sin16s_gen2::@1#1] -- register_copy + //SEG196 [101] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@4->sin16s_gen2::@1#2] -- register_copy + //SEG197 sin16s_gen2::@1 b1: - //SEG197 [101] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 + //SEG198 [102] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2 lda x sta sin16s.x lda x+1 @@ -8302,38 +8329,38 @@ sin16s_gen2: { sta sin16s.x+2 lda x+3 sta sin16s.x+3 - //SEG198 [102] call sin16s + //SEG199 [103] call sin16s jsr sin16s - //SEG199 [103] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 - //SEG200 sin16s_gen2::@3 - //SEG201 [104] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 - //SEG202 [105] call mul16s + //SEG200 [104] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 + //SEG201 sin16s_gen2::@3 + //SEG202 [105] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 + //SEG203 [106] call mul16s jsr mul16s - //SEG203 [106] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 - //SEG204 sin16s_gen2::@4 - //SEG205 [107] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 - //SEG206 [108] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 + //SEG204 [107] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 + //SEG205 sin16s_gen2::@4 + //SEG206 [108] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 + //SEG207 [109] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 -- vwuz1=_hi_vdsz2 lda _5+2 sta _6 lda _5+3 sta _6+1 - //SEG207 [109] (signed word~) sin16s_gen2::$8 ← (signed word)(word~) sin16s_gen2::$6 - //SEG208 [110] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 + //SEG208 [110] (signed word~) sin16s_gen2::$8 ← (signed word)(word~) sin16s_gen2::$6 + //SEG209 [111] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2 ldy #0 lda _8 sta (sintab),y iny lda _8+1 sta (sintab),y - //SEG209 [111] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 - lda sintab + //SEG210 [112] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + lda #SIZEOF_SIGNED_WORD clc - adc #2 + adc sintab sta sintab bcc !+ inc sintab+1 !: - //SEG210 [112] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 + //SEG211 [113] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2 lda x clc adc step @@ -8347,12 +8374,12 @@ sin16s_gen2: { lda x+3 adc step+3 sta x+3 - //SEG211 [113] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 + //SEG212 [114] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG212 [114] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG213 [115] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1 -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>XSIN_SIZE bcc b1 @@ -8361,11 +8388,11 @@ sin16s_gen2: { cmp #mul16u] - //SEG219 [127] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy - //SEG220 [127] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 + //SEG218 [118] call mul16u + //SEG219 [128] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG220 [128] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG221 [128] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl sta mul16u.b+1 jsr mul16u - //SEG221 [118] (dword) mul16u::return#2 ← (dword) mul16u::res#2 - //SEG222 mul16s::@4 - //SEG223 [119] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - //SEG224 [120] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + //SEG222 [119] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG223 mul16s::@4 + //SEG224 [120] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + //SEG225 [121] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b2 - //SEG225 mul16s::@3 - //SEG226 [121] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG226 mul16s::@3 + //SEG227 [122] (word~) mul16s::$9 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _9 lda m+3 sta _9+1 - //SEG227 [122] (word~) mul16s::$16 ← (word~) mul16s::$9 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG228 [123] (word~) mul16s::$16 ← (word~) mul16s::$9 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 lda _16 sec sbc #sin16s_gen2.ampl sta _16+1 - //SEG228 [123] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG229 [124] (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 - //SEG229 [124] phi from mul16s::@3 mul16s::@4 to mul16s::@1 [phi:mul16s::@3/mul16s::@4->mul16s::@1] - //SEG230 [124] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@4->mul16s::@1#0] -- register_copy - //SEG231 mul16s::@1 - //SEG232 mul16s::@2 + //SEG230 [125] phi from mul16s::@3 mul16s::@4 to mul16s::@1 [phi:mul16s::@3/mul16s::@4->mul16s::@1] + //SEG231 [125] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@4->mul16s::@1#0] -- register_copy + //SEG232 mul16s::@1 + //SEG233 mul16s::@2 b2: - //SEG233 [125] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 - //SEG234 mul16s::@return - //SEG235 [126] return + //SEG234 [126] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG235 mul16s::@return + //SEG236 [127] return rts } -//SEG236 mul16u +//SEG237 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage($11) a, word zeropage($f) b) mul16u: { @@ -8433,7 +8460,7 @@ mul16u: { .label res = $b .label return = $b .label b = $f - //SEG237 [128] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG238 [129] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -8441,34 +8468,34 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG238 [129] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] - //SEG239 [129] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG240 [129] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG239 [130] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG240 [130] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG241 [130] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 sta res sta res+1 sta res+2 sta res+3 - //SEG241 [129] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy - //SEG242 mul16u::@1 + //SEG242 [130] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG243 mul16u::@1 b1: - //SEG243 [130] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG244 [131] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 - //SEG244 mul16u::@return - //SEG245 [131] return + //SEG245 mul16u::@return + //SEG246 [132] return rts - //SEG246 mul16u::@2 + //SEG247 mul16u::@2 b2: - //SEG247 [132] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG248 [133] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG248 [133] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 + //SEG249 [134] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3 - //SEG249 mul16u::@4 - //SEG250 [134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG250 mul16u::@4 + //SEG251 [135] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -8482,26 +8509,26 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG251 [135] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] - //SEG252 [135] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy - //SEG253 mul16u::@3 + //SEG252 [136] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3] + //SEG253 [136] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy + //SEG254 mul16u::@3 b3: - //SEG254 [136] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG255 [137] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG255 [137] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG256 [138] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG256 [129] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] - //SEG257 [129] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy - //SEG258 [129] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy - //SEG259 [129] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy + //SEG257 [130] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1] + //SEG258 [130] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy + //SEG259 [130] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy + //SEG260 [130] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy jmp b1 } -//SEG260 sin16s +//SEG261 sin16s // Calculate signed word sinus sin(x) // x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28 // result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff @@ -8520,7 +8547,7 @@ sin16s: { .label x5_128 = $f .label sinx = $17 .label isUpper = 4 - //SEG261 [138] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG262 [139] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_u4f28>>$10 bcc b4 @@ -8537,8 +8564,8 @@ sin16s: { cmp #PI_u4f28>>$10 sta x+3 - //SEG264 [140] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] - //SEG265 [140] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG265 [141] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG266 [141] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG266 [140] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG267 [141] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG267 [140] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG268 [141] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b4: - //SEG268 [140] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG269 [141] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG269 [140] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy - //SEG270 sin16s::@1 + //SEG270 [141] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG271 sin16s::@1 b1: - //SEG271 [141] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG272 [142] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_HALF_u4f28>>$10 bcc b2 @@ -8583,8 +8610,8 @@ sin16s: { cmp #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG274 [143] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] - //SEG275 [143] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy - //SEG276 sin16s::@2 + //SEG275 [144] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG276 [144] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG277 sin16s::@2 b2: - //SEG277 [144] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 + //SEG278 [145] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 ldy #3 !: asl _4 @@ -8611,71 +8638,71 @@ sin16s: { rol _4+3 dey bne !- - //SEG278 [145] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 + //SEG279 [146] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2 lda _4+2 sta x1 lda _4+3 sta x1+1 - //SEG279 [146] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG280 [147] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG280 [147] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG281 [148] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG281 [148] call mulu16_sel - //SEG282 [178] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] - //SEG283 [178] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG282 [149] call mulu16_sel + //SEG283 [179] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG284 [179] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG284 [178] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG285 [178] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG285 [179] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG286 [179] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG286 [149] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 - //SEG287 sin16s::@7 - //SEG288 [150] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG287 [150] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + //SEG288 sin16s::@7 + //SEG289 [151] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 lda mulu16_sel.return sta x2 lda mulu16_sel.return+1 sta x2+1 - //SEG289 [151] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - //SEG290 [152] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG290 [152] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG291 [153] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG291 [153] call mulu16_sel - //SEG292 [178] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] - //SEG293 [178] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG292 [154] call mulu16_sel + //SEG293 [179] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel] + //SEG294 [179] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG294 [178] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy - //SEG295 [178] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy + //SEG295 [179] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy + //SEG296 [179] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG296 [154] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG297 [155] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return sta mulu16_sel.return_1 lda mulu16_sel.return+1 sta mulu16_sel.return_1+1 - //SEG297 sin16s::@8 - //SEG298 [155] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - //SEG299 [156] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - //SEG300 [157] call mulu16_sel - //SEG301 [178] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] - //SEG302 [178] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG298 sin16s::@8 + //SEG299 [156] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG300 [157] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG301 [158] call mulu16_sel + //SEG302 [179] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG303 [179] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG303 [178] phi (word) mulu16_sel::v2#5 = (dword/signed dword) $10000/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG304 [179] phi (word) mulu16_sel::v2#5 = (dword/signed dword) $10000/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG304 [178] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG305 [179] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG305 [158] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 - //SEG306 sin16s::@9 - //SEG307 [159] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - //SEG308 [160] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG306 [159] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + //SEG307 sin16s::@9 + //SEG308 [160] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + //SEG309 [161] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -8683,50 +8710,50 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG309 [161] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - //SEG310 [162] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG310 [162] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG311 [163] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG311 [163] call mulu16_sel - //SEG312 [178] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] - //SEG313 [178] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG312 [164] call mulu16_sel + //SEG313 [179] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG314 [179] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG314 [178] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy - //SEG315 [178] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG315 [179] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy + //SEG316 [179] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG316 [164] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG317 [165] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return sta mulu16_sel.return_10 lda mulu16_sel.return+1 sta mulu16_sel.return_10+1 - //SEG317 sin16s::@10 - //SEG318 [165] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - //SEG319 [166] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - //SEG320 [167] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG318 sin16s::@10 + //SEG319 [166] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + //SEG320 [167] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG321 [168] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG321 [168] call mulu16_sel - //SEG322 [178] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] - //SEG323 [178] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG322 [169] call mulu16_sel + //SEG323 [179] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG324 [179] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG324 [178] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG325 [178] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG325 [179] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG326 [179] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG326 [169] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 - //SEG327 sin16s::@11 - //SEG328 [170] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - //SEG329 [171] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 + //SEG327 [170] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + //SEG328 sin16s::@11 + //SEG329 [171] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + //SEG330 [172] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 ldy #4 !: lsr x5_128+1 ror x5_128 dey bne !- - //SEG330 [172] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG331 [173] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -8734,12 +8761,12 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG331 [173] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 + //SEG332 [174] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b3 - //SEG332 sin16s::@6 - //SEG333 [174] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG333 sin16s::@6 + //SEG334 [175] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda sinx eor #$ff @@ -8749,17 +8776,17 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG334 [175] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] - //SEG335 [175] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy - //SEG336 sin16s::@3 + //SEG335 [176] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3] + //SEG336 [176] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG337 sin16s::@3 b3: - //SEG337 sin16s::@return - //SEG338 [176] return + //SEG338 sin16s::@return + //SEG339 [177] return rts - //SEG339 sin16s::@12 - //SEG340 [177] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG340 sin16s::@12 + //SEG341 [178] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 } -//SEG341 mulu16_sel +//SEG342 mulu16_sel // Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result. // The select parameter indicates how many of the highest bits of the 32-bit result to skip // mulu16_sel(word zeropage($19) v1, word zeropage($f) v2, byte register(X) select) @@ -8771,21 +8798,21 @@ mulu16_sel: { .label return = $f .label return_1 = $19 .label return_10 = $19 - //SEG342 [179] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG343 [180] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG343 [180] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - //SEG344 [181] call mul16u - //SEG345 [127] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] - //SEG346 [127] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy - //SEG347 [127] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy + //SEG344 [181] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + //SEG345 [182] call mul16u + //SEG346 [128] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG347 [128] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG348 [128] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - //SEG348 [182] (dword) mul16u::return#3 ← (dword) mul16u::res#2 - //SEG349 mulu16_sel::@1 - //SEG350 [183] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - //SEG351 [184] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + //SEG349 [183] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG350 mulu16_sel::@1 + //SEG351 [184] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + //SEG352 [185] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -8796,55 +8823,55 @@ mulu16_sel: { dex bne !- !e: - //SEG352 [185] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG353 [186] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return lda _1+3 sta return+1 - //SEG353 mulu16_sel::@return - //SEG354 [186] return + //SEG354 mulu16_sel::@return + //SEG355 [187] return rts } -//SEG355 div32u16u +//SEG356 div32u16u // Divide unsigned 32-bit dword dividend with a 16-bit word divisor // The 16-bit word remainder can be found in rem16u after the division div32u16u: { .label quotient_hi = $11 .label quotient_lo = $f .label return = $1b - //SEG356 [188] call divr16u - //SEG357 [197] phi from div32u16u to divr16u [phi:div32u16u->divr16u] - //SEG358 [197] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG357 [189] call divr16u + //SEG358 [198] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG359 [198] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta divr16u.dividend lda #>PI2_u4f28>>$10 sta divr16u.dividend+1 - //SEG359 [197] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG360 [198] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 lda #0 sta divr16u.rem sta divr16u.rem+1 jsr divr16u - //SEG360 [189] (word) divr16u::return#2 ← (word) divr16u::return#0 - //SEG361 div32u16u::@1 - //SEG362 [190] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG361 [190] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG362 div32u16u::@1 + //SEG363 [191] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return sta quotient_hi lda divr16u.return+1 sta quotient_hi+1 - //SEG363 [191] (word) divr16u::rem#4 ← (word) rem16u#1 - //SEG364 [192] call divr16u - //SEG365 [197] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] - //SEG366 [197] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 + //SEG364 [192] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG365 [193] call divr16u + //SEG366 [198] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u] + //SEG367 [198] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG367 [197] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy + //SEG368 [198] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy jsr divr16u - //SEG368 [193] (word) divr16u::return#3 ← (word) divr16u::return#0 - //SEG369 div32u16u::@2 - //SEG370 [194] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - //SEG371 [195] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG369 [194] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG370 div32u16u::@2 + //SEG371 [195] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG372 [196] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 lda quotient_hi sta return+2 lda quotient_hi+1 @@ -8853,11 +8880,11 @@ div32u16u: { sta return lda quotient_lo+1 sta return+1 - //SEG372 div32u16u::@return - //SEG373 [196] return + //SEG373 div32u16u::@return + //SEG374 [197] return rts } -//SEG374 divr16u +//SEG375 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -8868,48 +8895,48 @@ divr16u: { .label dividend = 9 .label quotient = $f .label return = $f - //SEG375 [198] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - //SEG376 [198] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG376 [199] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG377 [199] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG377 [198] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG378 [199] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 txa sta quotient sta quotient+1 - //SEG378 [198] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG379 [198] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy - //SEG380 [198] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - //SEG381 [198] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG382 [198] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG383 [198] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG384 [198] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy - //SEG385 divr16u::@1 + //SEG379 [199] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG380 [199] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG381 [199] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG382 [199] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG383 [199] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG384 [199] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG385 [199] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG386 divr16u::@1 b1: - //SEG386 [199] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG387 [200] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG387 [200] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG388 [201] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG388 [201] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 -- vbuaa=vbuaa_band_vbuc1 + //SEG389 [202] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG389 [202] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG390 [203] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG390 divr16u::@4 - //SEG391 [203] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG391 divr16u::@4 + //SEG392 [204] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG392 [204] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - //SEG393 [204] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy - //SEG394 divr16u::@2 + //SEG393 [205] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG394 [205] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG395 divr16u::@2 b2: - //SEG395 [205] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG396 [206] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG396 [206] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG397 [207] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG397 [207] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG398 [208] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>XSIN_SIZE bcc b3 @@ -8918,13 +8945,13 @@ divr16u: { cmp #XSIN_SIZE sta rem+1 - //SEG401 [210] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - //SEG402 [210] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG403 [210] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy - //SEG404 divr16u::@3 + //SEG402 [211] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG403 [211] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG404 [211] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG405 divr16u::@3 b3: - //SEG405 [211] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG406 [212] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG406 [212] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG407 [213] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG407 divr16u::@6 - //SEG408 [213] (word) rem16u#1 ← (word) divr16u::rem#11 - //SEG409 divr16u::@return - //SEG410 [214] return + //SEG408 divr16u::@6 + //SEG409 [214] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG410 divr16u::@return + //SEG411 [215] return rts } -//SEG411 fill +//SEG412 fill // Fill some memory with a value // fill(byte register(X) val) fill: { .label end = 9 .label addr = 2 - //SEG412 [216] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) $3e8 -- pbuz1=pbuz2_plus_vwuc1 + //SEG413 [217] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) $3e8 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -8962,28 +8989,28 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG413 [217] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] - //SEG414 [217] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy - //SEG415 fill::@1 + //SEG414 [218] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG415 [218] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG416 fill::@1 b1: - //SEG416 [218] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx + //SEG417 [219] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (addr),y - //SEG417 [219] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG418 [220] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG418 [220] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG419 [221] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 lda addr+1 cmp end+1 bne b1 lda addr cmp end bne b1 - //SEG419 fill::@return - //SEG420 [221] return + //SEG420 fill::@return + //SEG421 [222] return rts } .align $100 diff --git a/src/test/ref/examples/scrolllogo/scrolllogo.sym b/src/test/ref/examples/scrolllogo/scrolllogo.sym index 3e10d43c0..80172b48f 100644 --- a/src/test/ref/examples/scrolllogo/scrolllogo.sym +++ b/src/test/ref/examples/scrolllogo/scrolllogo.sym @@ -32,6 +32,7 @@ (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012 (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400 +(const byte) SIZEOF_SIGNED_WORD SIZEOF_SIGNED_WORD = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) VIC_MCM (const byte) VIC_MCM#0 VIC_MCM = (byte/signed byte/word/signed word/dword/signed dword) $10 (byte) WHITE @@ -102,6 +103,7 @@ (byte) fill::val#3 reg byte x 1.8333333333333333 (void()) loop() (signed word*~) loop::$1 $1 zp ZP_WORD:9 22.0 +(word) loop::$5 $5 zp ZP_WORD:9 22.0 (label) loop::@1 (label) loop::@2 (label) loop::@3 @@ -356,7 +358,7 @@ (signed word[XSIN_SIZE#0]) xsin (const signed word[XSIN_SIZE#0]) xsin#0 xsin = { fill( XSIN_SIZE#0, 0) } (word) xsin_idx -(word) xsin_idx#11 xsin_idx zp ZP_WORD:2 4.714285714285714 +(word) xsin_idx#11 xsin_idx zp ZP_WORD:2 4.125 (word) xsin_idx#19 xsin_idx zp ZP_WORD:2 11.0 (word) xsin_idx#3 xsin_idx zp ZP_WORD:2 11.0 @@ -366,7 +368,7 @@ reg byte y [ render_logo::screen_idx#10 render_logo::screen_idx#4 render_logo::s zp ZP_BYTE:4 [ render_logo::logo_idx#10 render_logo::logo_idx#3 render_logo::logo_idx#11 render_logo::logo_idx#14 render_logo::logo_idx#4 sin16s::isUpper#2 render_logo::x_char#0 ] reg byte y [ render_logo::screen_idx#15 render_logo::screen_idx#21 render_logo::screen_idx#5 render_logo::screen_idx#6 ] zp ZP_DWORD:5 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] -zp ZP_WORD:9 [ sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 loop::$1 loop::xpos#0 render_logo::xpos#0 fill::end#0 ] +zp ZP_WORD:9 [ sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 loop::$5 loop::$1 loop::xpos#0 render_logo::xpos#0 fill::end#0 ] zp ZP_DWORD:11 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 sin16s_gen2::$5 mulu16_sel::$0 mulu16_sel::$1 sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$4 ] zp ZP_WORD:15 [ mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 render_logo::$3 sin16s_gen2::$6 sin16s_gen2::$8 mul16s::$9 mul16s::$16 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] zp ZP_WORD:17 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 div32u16u::quotient_hi#0 ] diff --git a/src/test/ref/sinusgen16b.asm b/src/test/ref/sinusgen16b.asm index 4926a1d27..c99639748 100644 --- a/src/test/ref/sinusgen16b.asm +++ b/src/test/ref/sinusgen16b.asm @@ -2,6 +2,7 @@ .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" + .const SIZEOF_SIGNED_WORD = 2 // PI*2 in u[4.28] format .const PI2_u4f28 = $6487ed51 // PI in u[4.28] format @@ -59,16 +60,16 @@ main: { lda #>str sta print_str.str+1 jsr print_str - lda st1 + lda #SIZEOF_SIGNED_WORD clc - adc #2 + adc st1 sta st1 bcc !+ inc st1+1 !: - lda st2 + lda #SIZEOF_SIGNED_WORD clc - adc #2 + adc st2 sta st2 bcc !+ inc st2+1 @@ -226,9 +227,9 @@ sin16s_genb: { iny lda _2+1 sta (sintab),y - lda sintab + lda #SIZEOF_SIGNED_WORD clc - adc #2 + adc sintab sta sintab bcc !+ inc sintab+1 @@ -618,9 +619,9 @@ sin16s_gen: { iny lda _1+1 sta (sintab),y - lda sintab + lda #SIZEOF_SIGNED_WORD clc - adc #2 + adc sintab sta sintab bcc !+ inc sintab+1 diff --git a/src/test/ref/sinusgen16b.cfg b/src/test/ref/sinusgen16b.cfg index 9bbdaf0dc..008db8107 100644 --- a/src/test/ref/sinusgen16b.cfg +++ b/src/test/ref/sinusgen16b.cfg @@ -41,8 +41,8 @@ main::@6: scope:[main] from main::@2 [19] call print_str to:main::@7 main::@7: scope:[main] from main::@6 - [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD + [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (const byte) SIZEOF_SIGNED_WORD [22] (byte) main::i#1 ← ++ (byte) main::i#2 [23] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $78) goto main::@1 to:main::@return @@ -150,7 +150,7 @@ sin16s_genb::@1: scope:[sin16s_genb] from sin16s_genb::@2 sin16s_genb::@3 sin16s_genb::@3: scope:[sin16s_genb] from sin16s_genb::@1 [70] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 [71] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 - [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [73] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 [74] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2 [75] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 @@ -343,7 +343,7 @@ sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@2 sin16s_gen::@3 sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen::@1 [171] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 [172] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 - [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [174] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [175] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 [176] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 diff --git a/src/test/ref/sinusgen16b.log b/src/test/ref/sinusgen16b.log index 87c631c08..5473f1f0e 100644 --- a/src/test/ref/sinusgen16b.log +++ b/src/test/ref/sinusgen16b.log @@ -1,3 +1,8 @@ +Fixing pointer increment (signed word*) sin16s_gen::sintab ← ++ (signed word*) sin16s_gen::sintab +Fixing pointer increment (signed word*) sin16s_gen2::sintab ← ++ (signed word*) sin16s_gen2::sintab +Fixing pointer increment (signed word*) sin16s_genb::sintab ← ++ (signed word*) sin16s_genb::sintab +Fixing pointer increment (signed word*) main::st1 ← ++ (signed word*) main::st1 +Fixing pointer increment (signed word*) main::st2 ← ++ (signed word*) main::st2 Identified constant variable (word) main::wavelength CONTROL FLOW GRAPH SSA @@ -222,13 +227,12 @@ sin16s_gen::@4: scope:[sin16s_gen] from sin16s_gen::@1 (signed word) sin16s::return#3 ← phi( sin16s_gen::@1/(signed word) sin16s::return#0 ) (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#3 *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 - (signed word*~) sin16s_gen::$2 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - (signed word*) sin16s_gen::sintab#0 ← (signed word*~) sin16s_gen::$2 - (dword~) sin16s_gen::$3 ← (dword) sin16s_gen::x#3 + (dword) sin16s_gen::step#1 - (dword) sin16s_gen::x#1 ← (dword~) sin16s_gen::$3 + (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD + (dword~) sin16s_gen::$2 ← (dword) sin16s_gen::x#3 + (dword) sin16s_gen::step#1 + (dword) sin16s_gen::x#1 ← (dword~) sin16s_gen::$2 (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 - (bool~) sin16s_gen::$4 ← (word) sin16s_gen::i#1 < (word) sin16s_gen::wavelength#2 - if((bool~) sin16s_gen::$4) goto sin16s_gen::@1 + (bool~) sin16s_gen::$3 ← (word) sin16s_gen::i#1 < (word) sin16s_gen::wavelength#2 + if((bool~) sin16s_gen::$3) goto sin16s_gen::@1 to:sin16s_gen::@return sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@4 (word) rem16u#19 ← phi( sin16s_gen::@4/(word) rem16u#28 ) @@ -421,13 +425,12 @@ sin16s_genb::@4: scope:[sin16s_genb] from sin16s_genb::@1 (signed word) sin16sb::return#3 ← phi( sin16s_genb::@1/(signed word) sin16sb::return#0 ) (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#3 *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 - (signed word*~) sin16s_genb::$3 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - (signed word*) sin16s_genb::sintab#0 ← (signed word*~) sin16s_genb::$3 - (dword~) sin16s_genb::$4 ← (dword) sin16s_genb::x#3 + (dword) sin16s_genb::step#1 - (dword) sin16s_genb::x#1 ← (dword~) sin16s_genb::$4 + (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD + (dword~) sin16s_genb::$3 ← (dword) sin16s_genb::x#3 + (dword) sin16s_genb::step#1 + (dword) sin16s_genb::x#1 ← (dword~) sin16s_genb::$3 (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2 - (bool~) sin16s_genb::$5 ← (word) sin16s_genb::i#1 < (word) sin16s_genb::wavelength#2 - if((bool~) sin16s_genb::$5) goto sin16s_genb::@1 + (bool~) sin16s_genb::$4 ← (word) sin16s_genb::i#1 < (word) sin16s_genb::wavelength#2 + if((bool~) sin16s_genb::$4) goto sin16s_genb::@1 to:sin16s_genb::@return sin16s_genb::@return: scope:[sin16s_genb] from sin16s_genb::@4 (word) rem16u#21 ← phi( sin16s_genb::@4/(word) rem16u#30 ) @@ -793,13 +796,11 @@ main::@9: scope:[main] from main::@8 (signed word*) main::st1#3 ← phi( main::@8/(signed word*) main::st1#4 ) (byte*) print_char_cursor#38 ← phi( main::@8/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#38 - (signed word*~) main::$9 ← (signed word*) main::st1#3 + (byte/signed byte/word/signed word/dword/signed dword) 2 - (signed word*) main::st1#1 ← (signed word*~) main::$9 - (signed word*~) main::$10 ← (signed word*) main::st2#3 + (byte/signed byte/word/signed word/dword/signed dword) 2 - (signed word*) main::st2#1 ← (signed word*~) main::$10 + (signed word*) main::st1#1 ← (signed word*) main::st1#3 + (const byte) SIZEOF_SIGNED_WORD + (signed word*) main::st2#1 ← (signed word*) main::st2#3 + (const byte) SIZEOF_SIGNED_WORD (byte) main::i#1 ← (byte) main::i#2 + rangenext(0,$77) - (bool~) main::$11 ← (byte) main::i#1 != rangelast(0,$77) - if((bool~) main::$11) goto main::@1 + (bool~) main::$9 ← (byte) main::i#1 != rangelast(0,$77) + if((bool~) main::$9) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte*) print_line_cursor#20 ← phi( main::@1/(byte*) print_line_cursor#18 ) @@ -868,6 +869,7 @@ SYMBOL TABLE SSA (word) PI_u4f12#0 (dword) PI_u4f28 (dword) PI_u4f28#0 +(const byte) SIZEOF_SIGNED_WORD = (byte/signed byte/word/signed word/dword/signed dword) 2 (dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) (word~) div32u16u::$0 (word~) div32u16u::$1 @@ -980,12 +982,10 @@ SYMBOL TABLE SSA (word) divr16u::return#5 (word) divr16u::return#6 (void()) main() -(signed word*~) main::$10 -(bool~) main::$11 (signed word~) main::$3 (bool~) main::$4 (bool~) main::$5 -(signed word*~) main::$9 +(bool~) main::$9 (label) main::@1 (label) main::@10 (label) main::@2 @@ -1447,9 +1447,8 @@ SYMBOL TABLE SSA (void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength) (dword~) sin16s_gen::$0 (signed word~) sin16s_gen::$1 -(signed word*~) sin16s_gen::$2 -(dword~) sin16s_gen::$3 -(bool~) sin16s_gen::$4 +(dword~) sin16s_gen::$2 +(bool~) sin16s_gen::$3 (label) sin16s_gen::@1 (label) sin16s_gen::@3 (label) sin16s_gen::@4 @@ -1485,9 +1484,8 @@ SYMBOL TABLE SSA (dword~) sin16s_genb::$0 (word~) sin16s_genb::$1 (signed word~) sin16s_genb::$2 -(signed word*~) sin16s_genb::$3 -(dword~) sin16s_genb::$4 -(bool~) sin16s_genb::$5 +(dword~) sin16s_genb::$3 +(bool~) sin16s_genb::$4 (label) sin16s_genb::@1 (label) sin16s_genb::@3 (label) sin16s_genb::@4 @@ -1612,14 +1610,14 @@ SYMBOL TABLE SSA Inversing boolean not [10] (bool~) divr16u::$4 ← (byte~) divr16u::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [9] (bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not [18] (bool~) divr16u::$9 ← (word) divr16u::rem#6 < (word) divr16u::divisor#2 from [17] (bool~) divr16u::$8 ← (word) divr16u::rem#6 >= (word) divr16u::divisor#2 Inversing boolean not [74] (bool~) mul16u::$3 ← (byte/word~) mul16u::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [73] (bool~) mul16u::$2 ← (byte/word~) mul16u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [126] (bool~) sin16s::$1 ← (dword) sin16s::x#3 < (dword) PI_u4f28#0 from [125] (bool~) sin16s::$0 ← (dword) sin16s::x#3 >= (dword) PI_u4f28#0 -Inversing boolean not [130] (bool~) sin16s::$3 ← (dword) sin16s::x#4 < (dword) PI_HALF_u4f28#0 from [129] (bool~) sin16s::$2 ← (dword) sin16s::x#4 >= (dword) PI_HALF_u4f28#0 -Inversing boolean not [190] (bool~) sin16s::$17 ← (byte) sin16s::isUpper#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [189] (bool~) sin16s::$16 ← (byte) sin16s::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [249] (bool~) sin16sb::$1 ← (word) sin16sb::x#3 < (word) PI_u4f12#0 from [248] (bool~) sin16sb::$0 ← (word) sin16sb::x#3 >= (word) PI_u4f12#0 -Inversing boolean not [253] (bool~) sin16sb::$3 ← (word) sin16sb::x#4 < (word) PI_HALF_u4f12#0 from [252] (bool~) sin16sb::$2 ← (word) sin16sb::x#4 >= (word) PI_HALF_u4f12#0 -Inversing boolean not [312] (bool~) sin16sb::$16 ← (byte) sin16sb::isUpper#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [311] (bool~) sin16sb::$15 ← (byte) sin16sb::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [343] (bool~) print_sword::$1 ← (signed word) print_sword::w#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [342] (bool~) print_sword::$0 ← (signed word) print_sword::w#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [437] (bool~) main::$5 ← (signed word) main::sw#0 < (byte/signed byte/word/signed word/dword/signed dword) 0 from [436] (bool~) main::$4 ← (signed word) main::sw#0 >= (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [125] (bool~) sin16s::$1 ← (dword) sin16s::x#3 < (dword) PI_u4f28#0 from [124] (bool~) sin16s::$0 ← (dword) sin16s::x#3 >= (dword) PI_u4f28#0 +Inversing boolean not [129] (bool~) sin16s::$3 ← (dword) sin16s::x#4 < (dword) PI_HALF_u4f28#0 from [128] (bool~) sin16s::$2 ← (dword) sin16s::x#4 >= (dword) PI_HALF_u4f28#0 +Inversing boolean not [189] (bool~) sin16s::$17 ← (byte) sin16s::isUpper#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [188] (bool~) sin16s::$16 ← (byte) sin16s::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [247] (bool~) sin16sb::$1 ← (word) sin16sb::x#3 < (word) PI_u4f12#0 from [246] (bool~) sin16sb::$0 ← (word) sin16sb::x#3 >= (word) PI_u4f12#0 +Inversing boolean not [251] (bool~) sin16sb::$3 ← (word) sin16sb::x#4 < (word) PI_HALF_u4f12#0 from [250] (bool~) sin16sb::$2 ← (word) sin16sb::x#4 >= (word) PI_HALF_u4f12#0 +Inversing boolean not [310] (bool~) sin16sb::$16 ← (byte) sin16sb::isUpper#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [309] (bool~) sin16sb::$15 ← (byte) sin16sb::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [341] (bool~) print_sword::$1 ← (signed word) print_sword::w#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [340] (bool~) print_sword::$0 ← (signed word) print_sword::w#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [435] (bool~) main::$5 ← (signed word) main::sw#0 < (byte/signed byte/word/signed word/dword/signed dword) 0 from [434] (bool~) main::$4 ← (signed word) main::sw#0 >= (byte/signed byte/word/signed word/dword/signed dword) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#7 Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#8 @@ -1666,8 +1664,7 @@ Alias (dword) sin16s_gen::step#1 = (dword) sin16s_gen::step#2 Alias (word) sin16s_gen::i#2 = (word) sin16s_gen::i#3 Alias (word) sin16s_gen::wavelength#2 = (word) sin16s_gen::wavelength#3 Alias (word) rem16u#19 = (word) rem16u#28 (word) rem16u#34 (word) rem16u#7 -Alias (signed word*) sin16s_gen::sintab#0 = (signed word*~) sin16s_gen::$2 -Alias (dword) sin16s_gen::x#1 = (dword~) sin16s_gen::$3 +Alias (dword) sin16s_gen::x#1 = (dword~) sin16s_gen::$2 Alias (dword) sin16s::x#3 = (dword) sin16s::x#5 Alias (dword) sin16s::x#1 = (dword~) sin16s::$18 Alias (word) sin16s::x1#0 = (word~) sin16s::$5 (word) sin16s::x1#1 (word) sin16s::x1#4 (word) sin16s::x1#2 (word) sin16s::x1#3 @@ -1708,8 +1705,7 @@ Alias (dword) sin16s_genb::step#1 = (dword) sin16s_genb::step#2 Alias (word) sin16s_genb::i#2 = (word) sin16s_genb::i#3 Alias (word) sin16s_genb::wavelength#2 = (word) sin16s_genb::wavelength#3 Alias (word) rem16u#21 = (word) rem16u#30 (word) rem16u#35 (word) rem16u#9 -Alias (signed word*) sin16s_genb::sintab#0 = (signed word*~) sin16s_genb::$3 -Alias (dword) sin16s_genb::x#1 = (dword~) sin16s_genb::$4 +Alias (dword) sin16s_genb::x#1 = (dword~) sin16s_genb::$3 Alias (word) sin16sb::x#3 = (word) sin16sb::x#5 Alias (word) sin16sb::x#1 = (word~) sin16sb::$17 Alias (word) sin16sb::x1#0 = (word/signed dword/dword~) sin16sb::$4 (word) sin16sb::x1#1 (word) sin16sb::x1#4 (word) sin16sb::x1#2 (word) sin16sb::x1#3 @@ -1770,8 +1766,6 @@ Alias (word) rem16u#12 = (word) rem16u#36 (word) rem16u#39 (word) rem16u#32 (wor Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#14 (byte*) print_line_cursor#17 (byte*) print_line_cursor#8 (byte*) print_line_cursor#4 Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#37 Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#38 (byte*) print_char_cursor#40 (byte*) print_char_cursor#20 -Alias (signed word*) main::st1#1 = (signed word*~) main::$9 -Alias (signed word*) main::st2#1 = (signed word*~) main::$10 Alias (byte*) print_char_cursor#49 = (byte*) print_char_cursor#54 Alias (signed word*) main::st1#2 = (signed word*) main::st1#7 (signed word*) main::st1#6 Alias (signed word*) main::st2#2 = (signed word*) main::st2#7 (signed word*) main::st2#6 @@ -1865,19 +1859,19 @@ Simple Condition (bool~) divr16u::$9 [19] if((word) divr16u::rem#6<(word) divr16 Simple Condition (bool~) divr16u::$11 [26] if((byte) divr16u::i#1!=rangelast(0,$f)) goto divr16u::@1 Simple Condition (bool~) mul16u::$0 [70] if((word) mul16u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 Simple Condition (bool~) mul16u::$3 [75] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -Simple Condition (bool~) sin16s_gen::$4 [119] if((word) sin16s_gen::i#1<(word) sin16s_gen::wavelength#0) goto sin16s_gen::@1 -Simple Condition (bool~) sin16s::$1 [127] if((dword) sin16s::x#0<(dword) PI_u4f28#0) goto sin16s::@1 -Simple Condition (bool~) sin16s::$3 [131] if((dword) sin16s::x#4<(dword) PI_HALF_u4f28#0) goto sin16s::@2 -Simple Condition (bool~) sin16s::$17 [191] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@3 -Simple Condition (bool~) sin16s_genb::$5 [242] if((word) sin16s_genb::i#1<(word) sin16s_genb::wavelength#0) goto sin16s_genb::@1 -Simple Condition (bool~) sin16sb::$1 [250] if((word) sin16sb::x#0<(word) PI_u4f12#0) goto sin16sb::@1 -Simple Condition (bool~) sin16sb::$3 [254] if((word) sin16sb::x#4<(word) PI_HALF_u4f12#0) goto sin16sb::@2 -Simple Condition (bool~) sin16sb::$16 [313] if((byte) sin16sb::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16sb::@3 -Simple Condition (bool~) print_str::$0 [333] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 -Simple Condition (bool~) print_sword::$1 [344] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -Simple Condition (bool~) print_cls::$1 [404] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 -Simple Condition (bool~) main::$5 [438] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -Simple Condition (bool~) main::$11 [454] if((byte) main::i#1!=rangelast(0,$77)) goto main::@1 +Simple Condition (bool~) sin16s_gen::$3 [118] if((word) sin16s_gen::i#1<(word) sin16s_gen::wavelength#0) goto sin16s_gen::@1 +Simple Condition (bool~) sin16s::$1 [126] if((dword) sin16s::x#0<(dword) PI_u4f28#0) goto sin16s::@1 +Simple Condition (bool~) sin16s::$3 [130] if((dword) sin16s::x#4<(dword) PI_HALF_u4f28#0) goto sin16s::@2 +Simple Condition (bool~) sin16s::$17 [190] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@3 +Simple Condition (bool~) sin16s_genb::$4 [240] if((word) sin16s_genb::i#1<(word) sin16s_genb::wavelength#0) goto sin16s_genb::@1 +Simple Condition (bool~) sin16sb::$1 [248] if((word) sin16sb::x#0<(word) PI_u4f12#0) goto sin16sb::@1 +Simple Condition (bool~) sin16sb::$3 [252] if((word) sin16sb::x#4<(word) PI_HALF_u4f12#0) goto sin16sb::@2 +Simple Condition (bool~) sin16sb::$16 [311] if((byte) sin16sb::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16sb::@3 +Simple Condition (bool~) print_str::$0 [331] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 +Simple Condition (bool~) print_sword::$1 [342] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 +Simple Condition (bool~) print_cls::$1 [402] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 +Simple Condition (bool~) main::$5 [436] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 +Simple Condition (bool~) main::$9 [450] if((byte) main::i#1!=rangelast(0,$77)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const word) rem16u#0 = 0 Constant (const word) divr16u::quotient#0 = 0 @@ -2279,8 +2273,8 @@ main::@6: scope:[main] from main::@2 [19] call print_str to:main::@7 main::@7: scope:[main] from main::@6 - [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD + [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (const byte) SIZEOF_SIGNED_WORD [22] (byte) main::i#1 ← ++ (byte) main::i#2 [23] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $78) goto main::@1 to:main::@return @@ -2388,7 +2382,7 @@ sin16s_genb::@1: scope:[sin16s_genb] from sin16s_genb::@2 sin16s_genb::@3 sin16s_genb::@3: scope:[sin16s_genb] from sin16s_genb::@1 [70] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 [71] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 - [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [73] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 [74] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2 [75] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 @@ -2581,7 +2575,7 @@ sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@2 sin16s_gen::@3 sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen::@1 [171] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 [172] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 - [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [174] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [175] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 [176] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 @@ -3181,6 +3175,7 @@ INITIAL ASM :BasicUpstart(bbegin) .pc = $80d "Program" //SEG2 Global Constants & labels + .const SIZEOF_SIGNED_WORD = 2 // PI*2 in u[4.28] format .const PI2_u4f28 = $6487ed51 // PI in u[4.28] format @@ -3329,18 +3324,18 @@ main: { jmp b7 //SEG51 main::@7 b7: - //SEG52 [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 - lda st1 + //SEG52 [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + lda #SIZEOF_SIGNED_WORD clc - adc #2 + adc st1 sta st1 bcc !+ inc st1+1 !: - //SEG53 [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 - lda st2 + //SEG53 [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + lda #SIZEOF_SIGNED_WORD clc - adc #2 + adc st2 sta st2 bcc !+ inc st2+1 @@ -3682,10 +3677,10 @@ sin16s_genb: { iny lda _2+1 sta (sintab),y - //SEG154 [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 - lda sintab + //SEG154 [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + lda #SIZEOF_SIGNED_WORD clc - adc #2 + adc sintab sta sintab bcc !+ inc sintab+1 @@ -4519,10 +4514,10 @@ sin16s_gen: { iny lda _1+1 sta (sintab),y - //SEG352 [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 - lda sintab + //SEG352 [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + lda #SIZEOF_SIGNED_WORD clc - adc #2 + adc sintab sta sintab bcc !+ inc sintab+1 @@ -4928,8 +4923,8 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ ma Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ main::i#2 main::i#1 ] Statement [12] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 [ main::st1#2 main::st2#2 print_char_cursor#49 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 print_char_cursor#49 main::i#2 main::sw#0 ] ) always clobbers reg byte a Statement [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#48 print_sword::w#1 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#48 print_sword::w#1 ] ) always clobbers reg byte a -Statement [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ( main:2 [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ( main:2 [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ) always clobbers reg byte a +Statement [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ( main:2 [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ) always clobbers reg byte a +Statement [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (const byte) SIZEOF_SIGNED_WORD [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ( main:2 [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ) always clobbers reg byte a Statement [27] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y Statement [29] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y Statement [32] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_char_cursor#48 print_sword::w#1 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#48 print_sword::w#1 ] ) always clobbers reg byte a @@ -4949,7 +4944,7 @@ Statement [67] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 [ sin16s_genb: Statement [69] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#0 ] ) always clobbers reg byte a Statement [70] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16s_genb::$2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16s_genb::$2 ] ) always clobbers reg byte a Statement [71] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ) always clobbers reg byte a reg byte y -Statement [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ) always clobbers reg byte a +Statement [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ) always clobbers reg byte a Statement [73] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ) always clobbers reg byte a Statement [75] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] ) always clobbers reg byte a Statement [77] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1 [ sin16sb::x#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#0 ] ) always clobbers reg byte a @@ -5013,7 +5008,7 @@ Statement [168] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::st Statement [170] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ) always clobbers reg byte a Statement [171] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ) always clobbers reg byte a Statement [172] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) always clobbers reg byte a reg byte y -Statement [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ) always clobbers reg byte a +Statement [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ) always clobbers reg byte a Statement [174] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) always clobbers reg byte a Statement [176] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) always clobbers reg byte a Statement [178] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) always clobbers reg byte a @@ -5050,8 +5045,8 @@ Statement [217] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s:: Statement [11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2) [ main::st1#2 main::st2#2 print_char_cursor#49 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 print_char_cursor#49 main::i#2 main::sw#0 ] ) always clobbers reg byte a reg byte y Statement [12] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 [ main::st1#2 main::st2#2 print_char_cursor#49 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 print_char_cursor#49 main::i#2 main::sw#0 ] ) always clobbers reg byte a Statement [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#48 print_sword::w#1 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#48 print_sword::w#1 ] ) always clobbers reg byte a -Statement [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ( main:2 [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ) always clobbers reg byte a -Statement [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ( main:2 [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ) always clobbers reg byte a +Statement [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ( main:2 [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ) always clobbers reg byte a +Statement [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (const byte) SIZEOF_SIGNED_WORD [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ( main:2 [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ) always clobbers reg byte a Statement [27] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y Statement [29] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y Statement [32] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_char_cursor#48 print_sword::w#1 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#48 print_sword::w#1 ] ) always clobbers reg byte a @@ -5069,7 +5064,7 @@ Statement [67] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 [ sin16s_genb: Statement [69] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#0 ] ) always clobbers reg byte a Statement [70] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16s_genb::$2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16s_genb::$2 ] ) always clobbers reg byte a Statement [71] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ) always clobbers reg byte a reg byte y -Statement [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ) always clobbers reg byte a +Statement [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ) always clobbers reg byte a Statement [73] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ) always clobbers reg byte a Statement [75] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] ) always clobbers reg byte a Statement [77] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1 [ sin16sb::x#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#0 ] ) always clobbers reg byte a @@ -5128,7 +5123,7 @@ Statement [168] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::st Statement [170] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ) always clobbers reg byte a Statement [171] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ) always clobbers reg byte a Statement [172] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) always clobbers reg byte a reg byte y -Statement [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ) always clobbers reg byte a +Statement [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ) always clobbers reg byte a Statement [174] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) always clobbers reg byte a Statement [176] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) always clobbers reg byte a Statement [178] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) always clobbers reg byte a @@ -5370,6 +5365,7 @@ ASSEMBLER BEFORE OPTIMIZATION :BasicUpstart(bbegin) .pc = $80d "Program" //SEG2 Global Constants & labels + .const SIZEOF_SIGNED_WORD = 2 // PI*2 in u[4.28] format .const PI2_u4f28 = $6487ed51 // PI in u[4.28] format @@ -5512,18 +5508,18 @@ main: { jmp b7 //SEG51 main::@7 b7: - //SEG52 [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 - lda st1 + //SEG52 [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + lda #SIZEOF_SIGNED_WORD clc - adc #2 + adc st1 sta st1 bcc !+ inc st1+1 !: - //SEG53 [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 - lda st2 + //SEG53 [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + lda #SIZEOF_SIGNED_WORD clc - adc #2 + adc st2 sta st2 bcc !+ inc st2+1 @@ -5831,10 +5827,10 @@ sin16s_genb: { iny lda _2+1 sta (sintab),y - //SEG154 [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 - lda sintab + //SEG154 [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + lda #SIZEOF_SIGNED_WORD clc - adc #2 + adc sintab sta sintab bcc !+ inc sintab+1 @@ -6511,10 +6507,10 @@ sin16s_gen: { iny lda _1+1 sta (sintab),y - //SEG352 [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 - lda sintab + //SEG352 [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + lda #SIZEOF_SIGNED_WORD clc - adc #2 + adc sintab sta sintab bcc !+ inc sintab+1 @@ -7115,6 +7111,7 @@ FINAL SYMBOL TABLE (const word) PI_u4f12#0 PI_u4f12 = (word/signed word/dword/signed dword) $3244 (dword) PI_u4f28 (const dword) PI_u4f28#0 PI_u4f28 = (dword/signed dword) $3243f6a9 +(const byte) SIZEOF_SIGNED_WORD SIZEOF_SIGNED_WORD = (byte/signed byte/word/signed word/dword/signed dword) 2 (dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) (label) div32u16u::@1 (label) div32u16u::@2 @@ -7477,6 +7474,7 @@ Score: 23125 :BasicUpstart(main) .pc = $80d "Program" //SEG2 Global Constants & labels + .const SIZEOF_SIGNED_WORD = 2 // PI*2 in u[4.28] format .const PI2_u4f28 = $6487ed51 // PI in u[4.28] format @@ -7583,18 +7581,18 @@ main: { sta print_str.str+1 jsr print_str //SEG51 main::@7 - //SEG52 [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 - lda st1 + //SEG52 [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + lda #SIZEOF_SIGNED_WORD clc - adc #2 + adc st1 sta st1 bcc !+ inc st1+1 !: - //SEG53 [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 - lda st2 + //SEG53 [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + lda #SIZEOF_SIGNED_WORD clc - adc #2 + adc st2 sta st2 bcc !+ inc st2+1 @@ -7852,10 +7850,10 @@ sin16s_genb: { iny lda _2+1 sta (sintab),y - //SEG154 [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 - lda sintab + //SEG154 [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + lda #SIZEOF_SIGNED_WORD clc - adc #2 + adc sintab sta sintab bcc !+ inc sintab+1 @@ -8442,10 +8440,10 @@ sin16s_gen: { iny lda _1+1 sta (sintab),y - //SEG352 [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2 - lda sintab + //SEG352 [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1 + lda #SIZEOF_SIGNED_WORD clc - adc #2 + adc sintab sta sintab bcc !+ inc sintab+1 diff --git a/src/test/ref/sinusgen16b.sym b/src/test/ref/sinusgen16b.sym index 504b862b0..fc1f86f9f 100644 --- a/src/test/ref/sinusgen16b.sym +++ b/src/test/ref/sinusgen16b.sym @@ -11,6 +11,7 @@ (const word) PI_u4f12#0 PI_u4f12 = (word/signed word/dword/signed dword) $3244 (dword) PI_u4f28 (const dword) PI_u4f28#0 PI_u4f28 = (dword/signed dword) $3243f6a9 +(const byte) SIZEOF_SIGNED_WORD SIZEOF_SIGNED_WORD = (byte/signed byte/word/signed word/dword/signed dword) 2 (dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) (label) div32u16u::@1 (label) div32u16u::@2 diff --git a/src/test/ref/sinusgenscale8.log b/src/test/ref/sinusgenscale8.log index 2619e5874..67c7c043a 100644 --- a/src/test/ref/sinusgenscale8.log +++ b/src/test/ref/sinusgenscale8.log @@ -1,3 +1,5 @@ +Fixing pointer increment (signed word*) sin16s_gen::sintab ← ++ (signed word*) sin16s_gen::sintab +Fixing pointer increment (signed word*) sin16s_gen2::sintab ← ++ (signed word*) sin16s_gen2::sintab Identified constant variable (word) main::tabsize CONTROL FLOW GRAPH SSA diff --git a/src/test/ref/test-division.asm b/src/test/ref/test-division.asm index c2c3b1c88..6f74de8b7 100644 --- a/src/test/ref/test-division.asm +++ b/src/test/ref/test-division.asm @@ -22,11 +22,16 @@ test_16s: { lda #0 sta i b1: - ldy i + lda i + asl + tay lda dividends,y sta dividend lda dividends+1,y sta dividend+1 + lda i + asl + tay lda divisors,y sta divisor lda divisors+1,y @@ -68,11 +73,8 @@ test_16s: { sta print_sword.w+1 jsr print_sword jsr print_ln - lda i - clc - adc #2 - sta i - lda #$c + inc i + lda #6 cmp i beq !b1+ jmp b1 @@ -541,11 +543,16 @@ test_16u: { lda #0 sta i b1: - ldy i + lda i + asl + tay lda dividends,y sta dividend lda dividends+1,y sta dividend+1 + lda i + asl + tay lda divisors,y sta divisor lda divisors+1,y @@ -587,11 +594,8 @@ test_16u: { sta print_word.w+1 jsr print_word jsr print_ln - lda i - clc - adc #2 - sta i - lda #$c + inc i + lda #6 cmp i bne b1 rts diff --git a/src/test/ref/test-division.cfg b/src/test/ref/test-division.cfg index ef4b9e041..d2f1a407e 100644 --- a/src/test/ref/test-division.cfg +++ b/src/test/ref/test-division.cfg @@ -35,548 +35,552 @@ test_16s: scope:[test_16s] from main::@4 to:test_16s::@1 test_16s::@1: scope:[test_16s] from test_16s test_16s::@10 [16] (byte) test_16s::i#10 ← phi( test_16s/(byte/signed byte/word/signed word/dword/signed dword) 0 test_16s::@10/(byte) test_16s::i#1 ) - [17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10) - [18] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::i#10) - [19] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 - [20] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 - [21] call div16s - [22] (signed word) div16s::return#2 ← (signed word) div16s::return#0 + [17] (byte) test_16s::$16 ← (byte) test_16s::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [18] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::$16) + [19] (byte) test_16s::$17 ← (byte) test_16s::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [20] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::$17) + [21] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 + [22] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 + [23] call div16s + [24] (signed word) div16s::return#2 ← (signed word) div16s::return#0 to:test_16s::@2 test_16s::@2: scope:[test_16s] from test_16s::@1 - [23] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 - [24] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 - [25] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 - [26] call print_sword + [25] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 + [26] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 + [27] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 + [28] call print_sword to:test_16s::@3 test_16s::@3: scope:[test_16s] from test_16s::@2 - [27] phi() - [28] call print_str + [29] phi() + [30] call print_str to:test_16s::@4 test_16s::@4: scope:[test_16s] from test_16s::@3 - [29] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 - [30] call print_sword + [31] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 + [32] call print_sword to:test_16s::@5 test_16s::@5: scope:[test_16s] from test_16s::@4 - [31] phi() - [32] call print_str + [33] phi() + [34] call print_str to:test_16s::@6 test_16s::@6: scope:[test_16s] from test_16s::@5 - [33] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 - [34] call print_sword + [35] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 + [36] call print_sword to:test_16s::@7 test_16s::@7: scope:[test_16s] from test_16s::@6 - [35] phi() - [36] call print_str + [37] phi() + [38] call print_str to:test_16s::@8 test_16s::@8: scope:[test_16s] from test_16s::@7 - [37] (signed word) print_sword::w#4 ← (signed word) rem16s#11 - [38] call print_sword + [39] (signed word) print_sword::w#4 ← (signed word) rem16s#11 + [40] call print_sword to:test_16s::@9 test_16s::@9: scope:[test_16s] from test_16s::@8 - [39] phi() - [40] call print_ln + [41] phi() + [42] call print_ln to:test_16s::@10 test_16s::@10: scope:[test_16s] from test_16s::@9 - [41] (byte) test_16s::i#1 ← (byte) test_16s::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [42] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $c) goto test_16s::@1 + [43] (byte) test_16s::i#1 ← ++ (byte) test_16s::i#10 + [44] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_16s::@1 to:test_16s::@return test_16s::@return: scope:[test_16s] from test_16s::@10 - [43] return + [45] return to:@return print_ln: scope:[print_ln] from test_16s::@9 test_16u::@9 test_8s::@9 test_8u::@9 - [44] (byte*) print_line_cursor#39 ← phi( test_16s::@9/(byte*) print_line_cursor#1 test_16u::@9/(byte*) print_line_cursor#1 test_8s::@9/(byte*) print_line_cursor#1 test_8u::@9/(byte*) print_line_cursor#41 ) + [46] (byte*) print_line_cursor#39 ← phi( test_16s::@9/(byte*) print_line_cursor#1 test_16u::@9/(byte*) print_line_cursor#1 test_8s::@9/(byte*) print_line_cursor#1 test_8u::@9/(byte*) print_line_cursor#41 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - [45] (byte*) print_line_cursor#20 ← phi( print_ln/(byte*) print_line_cursor#39 print_ln::@1/(byte*) print_line_cursor#1 ) - [46] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) $28 - [47] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 + [47] (byte*) print_line_cursor#20 ← phi( print_ln/(byte*) print_line_cursor#39 print_ln::@1/(byte*) print_line_cursor#1 ) + [48] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) $28 + [49] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 - [48] return + [50] return to:@return print_sword: scope:[print_sword] from test_16s::@2 test_16s::@4 test_16s::@6 test_16s::@8 - [49] (byte*) print_char_cursor#131 ← phi( test_16s::@2/(byte*~) print_char_cursor#159 test_16s::@4/(byte*) print_char_cursor#128 test_16s::@6/(byte*) print_char_cursor#128 test_16s::@8/(byte*) print_char_cursor#128 ) - [49] (signed word) print_sword::w#5 ← phi( test_16s::@2/(signed word) print_sword::w#1 test_16s::@4/(signed word) print_sword::w#2 test_16s::@6/(signed word) print_sword::w#3 test_16s::@8/(signed word) print_sword::w#4 ) - [50] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 + [51] (byte*) print_char_cursor#131 ← phi( test_16s::@2/(byte*~) print_char_cursor#159 test_16s::@4/(byte*) print_char_cursor#128 test_16s::@6/(byte*) print_char_cursor#128 test_16s::@8/(byte*) print_char_cursor#128 ) + [51] (signed word) print_sword::w#5 ← phi( test_16s::@2/(signed word) print_sword::w#1 test_16s::@4/(signed word) print_sword::w#2 test_16s::@6/(signed word) print_sword::w#3 test_16s::@8/(signed word) print_sword::w#4 ) + [52] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 to:print_sword::@2 print_sword::@2: scope:[print_sword] from print_sword - [51] phi() - [52] call print_char + [53] phi() + [54] call print_char to:print_sword::@3 print_sword::@3: scope:[print_sword] from print_sword::@2 - [53] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 + [55] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 to:print_sword::@1 print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [54] (byte*) print_char_cursor#130 ← phi( print_sword/(byte*) print_char_cursor#131 print_sword::@3/(byte*) print_char_cursor#18 ) - [54] (signed word) print_sword::w#6 ← phi( print_sword/(signed word) print_sword::w#5 print_sword::@3/(signed word) print_sword::w#0 ) - [55] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 - [56] call print_word + [56] (byte*) print_char_cursor#130 ← phi( print_sword/(byte*) print_char_cursor#131 print_sword::@3/(byte*) print_char_cursor#18 ) + [56] (signed word) print_sword::w#6 ← phi( print_sword/(signed word) print_sword::w#5 print_sword::@3/(signed word) print_sword::w#0 ) + [57] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 + [58] call print_word to:print_sword::@return print_sword::@return: scope:[print_sword] from print_sword::@1 - [57] return + [59] return to:@return print_word: scope:[print_word] from print_sword::@1 test_16u::@2 test_16u::@4 test_16u::@6 test_16u::@8 - [58] (byte*) print_char_cursor#135 ← phi( print_sword::@1/(byte*) print_char_cursor#130 test_16u::@2/(byte*~) print_char_cursor#166 test_16u::@4/(byte*) print_char_cursor#128 test_16u::@6/(byte*) print_char_cursor#128 test_16u::@8/(byte*) print_char_cursor#128 ) - [58] (word) print_word::w#5 ← phi( print_sword::@1/(word~) print_word::w#7 test_16u::@2/(word) print_word::w#1 test_16u::@4/(word) print_word::w#2 test_16u::@6/(word) print_word::w#3 test_16u::@8/(word) print_word::w#4 ) - [59] (byte) print_byte::b#1 ← > (word) print_word::w#5 - [60] call print_byte + [60] (byte*) print_char_cursor#135 ← phi( print_sword::@1/(byte*) print_char_cursor#130 test_16u::@2/(byte*~) print_char_cursor#166 test_16u::@4/(byte*) print_char_cursor#128 test_16u::@6/(byte*) print_char_cursor#128 test_16u::@8/(byte*) print_char_cursor#128 ) + [60] (word) print_word::w#5 ← phi( print_sword::@1/(word~) print_word::w#7 test_16u::@2/(word) print_word::w#1 test_16u::@4/(word) print_word::w#2 test_16u::@6/(word) print_word::w#3 test_16u::@8/(word) print_word::w#4 ) + [61] (byte) print_byte::b#1 ← > (word) print_word::w#5 + [62] call print_byte to:print_word::@1 print_word::@1: scope:[print_word] from print_word - [61] (byte) print_byte::b#2 ← < (word) print_word::w#5 - [62] call print_byte + [63] (byte) print_byte::b#2 ← < (word) print_word::w#5 + [64] call print_byte to:print_word::@return print_word::@return: scope:[print_word] from print_word::@1 - [63] return + [65] return to:@return print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 test_8u::@2 test_8u::@4 test_8u::@6 test_8u::@8 - [64] (byte*) print_char_cursor#136 ← phi( print_sbyte::@2/(byte*) print_char_cursor#18 print_word/(byte*) print_char_cursor#135 print_word::@1/(byte*) print_char_cursor#18 test_8u::@2/(byte*) print_char_cursor#138 test_8u::@4/(byte*) print_char_cursor#128 test_8u::@6/(byte*) print_char_cursor#128 test_8u::@8/(byte*) print_char_cursor#128 ) - [64] (byte) print_byte::b#7 ← phi( print_sbyte::@2/(byte~) print_byte::b#9 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 test_8u::@2/(byte) print_byte::b#3 test_8u::@4/(byte) print_byte::b#4 test_8u::@6/(byte) print_byte::b#5 test_8u::@8/(byte) print_byte::b#6 ) - [65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [66] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [67] call print_char + [66] (byte*) print_char_cursor#136 ← phi( print_sbyte::@2/(byte*) print_char_cursor#18 print_word/(byte*) print_char_cursor#135 print_word::@1/(byte*) print_char_cursor#18 test_8u::@2/(byte*) print_char_cursor#138 test_8u::@4/(byte*) print_char_cursor#128 test_8u::@6/(byte*) print_char_cursor#128 test_8u::@8/(byte*) print_char_cursor#128 ) + [66] (byte) print_byte::b#7 ← phi( print_sbyte::@2/(byte~) print_byte::b#9 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 test_8u::@2/(byte) print_byte::b#3 test_8u::@4/(byte) print_byte::b#4 test_8u::@6/(byte) print_byte::b#5 test_8u::@8/(byte) print_byte::b#6 ) + [67] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [68] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [69] call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) $f - [69] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [70] call print_char + [70] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) $f + [71] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [72] call print_char to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 - [71] return + [73] return to:@return print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@2 - [72] (byte*) print_char_cursor#82 ← phi( print_byte/(byte*) print_char_cursor#136 print_byte::@1/(byte*) print_char_cursor#18 print_sbyte::@1/(byte*) print_char_cursor#132 print_sbyte::@3/(byte*) print_char_cursor#132 print_sword::@2/(byte*) print_char_cursor#131 ) - [72] (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@2/(byte) '-' ) - [73] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 - [74] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 + [74] (byte*) print_char_cursor#82 ← phi( print_byte/(byte*) print_char_cursor#136 print_byte::@1/(byte*) print_char_cursor#18 print_sbyte::@1/(byte*) print_char_cursor#132 print_sbyte::@3/(byte*) print_char_cursor#132 print_sword::@2/(byte*) print_char_cursor#131 ) + [74] (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@2/(byte) '-' ) + [75] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 + [76] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [75] return + [77] return to:@return print_str: scope:[print_str] from test_16s::@3 test_16s::@5 test_16s::@7 test_16u::@3 test_16u::@5 test_16u::@7 test_8s::@3 test_8s::@5 test_8s::@7 test_8u::@3 test_8u::@5 test_8u::@7 - [76] (byte*) print_str::str#15 ← phi( test_16s::@3/(const string) str test_16s::@5/(const string) str1 test_16s::@7/(const string) str2 test_16u::@3/(const string) str test_16u::@5/(const string) str1 test_16u::@7/(const string) str2 test_8s::@3/(const string) str test_8s::@5/(const string) str1 test_8s::@7/(const string) str2 test_8u::@3/(const string) str test_8u::@5/(const string) str1 test_8u::@7/(const string) str2 ) + [78] (byte*) print_str::str#15 ← phi( test_16s::@3/(const string) str test_16s::@5/(const string) str1 test_16s::@7/(const string) str2 test_16u::@3/(const string) str test_16u::@5/(const string) str1 test_16u::@7/(const string) str2 test_8s::@3/(const string) str test_8s::@5/(const string) str1 test_8s::@7/(const string) str2 test_8u::@3/(const string) str test_8u::@5/(const string) str1 test_8u::@7/(const string) str2 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [77] (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#18 print_str::@2/(byte*) print_char_cursor#1 ) - [77] (byte*) print_str::str#13 ← phi( print_str/(byte*) print_str::str#15 print_str::@2/(byte*) print_str::str#0 ) - [78] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 + [79] (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#18 print_str::@2/(byte*) print_char_cursor#1 ) + [79] (byte*) print_str::str#13 ← phi( print_str/(byte*) print_str::str#15 print_str::@2/(byte*) print_str::str#0 ) + [80] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 to:print_str::@return print_str::@return: scope:[print_str] from print_str::@1 - [79] return + [81] return to:@return print_str::@2: scope:[print_str] from print_str::@1 - [80] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) - [81] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 - [82] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 + [82] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) + [83] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 + [84] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 to:print_str::@1 div16s: scope:[div16s] from test_16s::@1 - [83] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 - [84] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 - [85] call divr16s - [86] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + [85] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 + [86] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 + [87] call divr16s + [88] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 to:div16s::@1 div16s::@1: scope:[div16s] from div16s - [87] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 + [89] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 to:div16s::@return div16s::@return: scope:[div16s] from div16s::@1 - [88] return + [90] return to:@return divr16s: scope:[divr16s] from div16s - [89] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 + [91] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 to:divr16s::@7 divr16s::@7: scope:[divr16s] from divr16s - [90] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 + [92] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 to:divr16s::@2 divr16s::@2: scope:[divr16s] from divr16s::@1 divr16s::@7 - [91] (word) divr16s::remu#3 ← phi( divr16s::@1/((word))-(const signed word) divr16s::rem#0 divr16s::@7/((word))(const signed word) divr16s::rem#0 ) - [91] (word) divr16s::dividendu#3 ← phi( divr16s::@1/(word~) divr16s::dividendu#7 divr16s::@7/(word~) divr16s::dividendu#8 ) - [91] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 divr16s::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [92] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 + [93] (word) divr16s::remu#3 ← phi( divr16s::@1/((word))-(const signed word) divr16s::rem#0 divr16s::@7/((word))(const signed word) divr16s::rem#0 ) + [93] (word) divr16s::dividendu#3 ← phi( divr16s::@1/(word~) divr16s::dividendu#7 divr16s::@7/(word~) divr16s::dividendu#8 ) + [93] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 divr16s::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [94] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 to:divr16s::@8 divr16s::@8: scope:[divr16s] from divr16s::@2 - [93] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + [95] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 to:divr16s::@4 divr16s::@4: scope:[divr16s] from divr16s::@3 divr16s::@8 - [94] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@8/(byte) divr16s::neg#3 ) - [94] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@8/(word~) divr16s::divisoru#5 ) - [95] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 - [96] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 - [97] (word) divr16u::rem#4 ← (word) divr16s::remu#3 - [98] call divr16u - [99] (word) divr16u::return#3 ← (word) divr16u::return#0 + [96] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@8/(byte) divr16s::neg#3 ) + [96] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@8/(word~) divr16s::divisoru#5 ) + [97] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 + [98] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 + [99] (word) divr16u::rem#4 ← (word) divr16s::remu#3 + [100] call divr16u + [101] (word) divr16u::return#3 ← (word) divr16u::return#0 to:divr16s::@6 divr16s::@6: scope:[divr16s] from divr16s::@4 - [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 - [101] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@9 + [102] (word) divr16s::resultu#0 ← (word) divr16u::return#3 + [103] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@9 to:divr16s::@5 divr16s::@5: scope:[divr16s] from divr16s::@6 - [102] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 - [103] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 + [104] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 + [105] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 to:divr16s::@return divr16s::@return: scope:[divr16s] from divr16s::@5 divr16s::@9 - [104] (signed word) rem16s#11 ← phi( divr16s::@5/(signed word) rem16s#2 divr16s::@9/(signed word~) rem16s#37 ) - [104] (signed word) divr16s::return#2 ← phi( divr16s::@5/(signed word) divr16s::return#1 divr16s::@9/(signed word~) divr16s::return#7 ) - [105] return + [106] (signed word) rem16s#11 ← phi( divr16s::@5/(signed word) rem16s#2 divr16s::@9/(signed word~) rem16s#37 ) + [106] (signed word) divr16s::return#2 ← phi( divr16s::@5/(signed word) divr16s::return#1 divr16s::@9/(signed word~) divr16s::return#7 ) + [107] return to:@return divr16s::@9: scope:[divr16s] from divr16s::@6 - [106] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 - [107] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 + [108] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 + [109] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 to:divr16s::@return divr16s::@3: scope:[divr16s] from divr16s::@2 - [108] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 - [109] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 - [110] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 + [110] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 + [111] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 + [112] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 to:divr16s::@4 divr16s::@1: scope:[divr16s] from divr16s - [111] (signed word~) divr16s::$8 ← - (signed word) divr16s::dividend#0 - [112] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$8 + [113] (signed word~) divr16s::$8 ← - (signed word) divr16s::dividend#0 + [114] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$8 to:divr16s::@2 divr16u: scope:[divr16u] from div16u divr16s::@4 - [113] (word) divr16u::divisor#6 ← phi( div16u/(word) divr16u::divisor#0 divr16s::@4/(word) divr16u::divisor#1 ) - [113] (word) divr16u::dividend#5 ← phi( div16u/(word) divr16u::dividend#1 divr16s::@4/(word) divr16u::dividend#2 ) - [113] (word) divr16u::rem#10 ← phi( div16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16s::@4/(word) divr16u::rem#4 ) + [115] (word) divr16u::divisor#6 ← phi( div16u/(word) divr16u::divisor#0 divr16s::@4/(word) divr16u::divisor#1 ) + [115] (word) divr16u::dividend#5 ← phi( div16u/(word) divr16u::dividend#1 divr16s::@4/(word) divr16u::dividend#2 ) + [115] (word) divr16u::rem#10 ← phi( div16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16s::@4/(word) divr16u::rem#4 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [114] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) - [114] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) - [114] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [114] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) - [115] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [116] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [117] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 - [118] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 + [116] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) + [116] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) + [116] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [116] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) + [117] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [118] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [119] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 + [120] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [119] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 + [121] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [120] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [121] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [122] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 + [122] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [123] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [124] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [125] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [124] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 + [126] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [127] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [126] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [126] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [127] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [128] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 + [128] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [128] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [129] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [130] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [129] (word) rem16u#1 ← (word) divr16u::rem#11 + [131] (word) rem16u#1 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [130] return + [132] return to:@return test_8s: scope:[test_8s] from main::@3 - [131] phi() + [133] phi() to:test_8s::@1 test_8s::@1: scope:[test_8s] from test_8s test_8s::@10 - [132] (byte) test_8s::i#10 ← phi( test_8s/(byte/signed byte/word/signed word/dword/signed dword) 0 test_8s::@10/(byte) test_8s::i#1 ) - [133] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) - [134] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) - [135] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 - [136] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 - [137] call div8s - [138] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 + [134] (byte) test_8s::i#10 ← phi( test_8s/(byte/signed byte/word/signed word/dword/signed dword) 0 test_8s::@10/(byte) test_8s::i#1 ) + [135] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) + [136] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) + [137] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 + [138] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 + [139] call div8s + [140] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 to:test_8s::@2 test_8s::@2: scope:[test_8s] from test_8s::@1 - [139] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 - [140] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 - [141] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 - [142] call print_sbyte + [141] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 + [142] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 + [143] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 + [144] call print_sbyte to:test_8s::@3 test_8s::@3: scope:[test_8s] from test_8s::@2 - [143] phi() - [144] call print_str + [145] phi() + [146] call print_str to:test_8s::@4 test_8s::@4: scope:[test_8s] from test_8s::@3 - [145] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 - [146] call print_sbyte + [147] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 + [148] call print_sbyte to:test_8s::@5 test_8s::@5: scope:[test_8s] from test_8s::@4 - [147] phi() - [148] call print_str + [149] phi() + [150] call print_str to:test_8s::@6 test_8s::@6: scope:[test_8s] from test_8s::@5 - [149] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 - [150] call print_sbyte + [151] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 + [152] call print_sbyte to:test_8s::@7 test_8s::@7: scope:[test_8s] from test_8s::@6 - [151] phi() - [152] call print_str + [153] phi() + [154] call print_str to:test_8s::@8 test_8s::@8: scope:[test_8s] from test_8s::@7 - [153] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 - [154] call print_sbyte + [155] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 + [156] call print_sbyte to:test_8s::@9 test_8s::@9: scope:[test_8s] from test_8s::@8 - [155] phi() - [156] call print_ln + [157] phi() + [158] call print_ln to:test_8s::@10 test_8s::@10: scope:[test_8s] from test_8s::@9 - [157] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 - [158] if((byte) test_8s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8s::@1 + [159] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 + [160] if((byte) test_8s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8s::@1 to:test_8s::@return test_8s::@return: scope:[test_8s] from test_8s::@10 - [159] return + [161] return to:@return print_sbyte: scope:[print_sbyte] from test_8s::@2 test_8s::@4 test_8s::@6 test_8s::@8 - [160] (byte*) print_char_cursor#132 ← phi( test_8s::@2/(byte*~) print_char_cursor#184 test_8s::@4/(byte*) print_char_cursor#128 test_8s::@6/(byte*) print_char_cursor#128 test_8s::@8/(byte*) print_char_cursor#128 ) - [160] (signed byte) print_sbyte::b#10 ← phi( test_8s::@2/(signed byte) print_sbyte::b#1 test_8s::@4/(signed byte) print_sbyte::b#2 test_8s::@6/(signed byte) print_sbyte::b#3 test_8s::@8/(signed byte) print_sbyte::b#4 ) - [161] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 + [162] (byte*) print_char_cursor#132 ← phi( test_8s::@2/(byte*~) print_char_cursor#184 test_8s::@4/(byte*) print_char_cursor#128 test_8s::@6/(byte*) print_char_cursor#128 test_8s::@8/(byte*) print_char_cursor#128 ) + [162] (signed byte) print_sbyte::b#10 ← phi( test_8s::@2/(signed byte) print_sbyte::b#1 test_8s::@4/(signed byte) print_sbyte::b#2 test_8s::@6/(signed byte) print_sbyte::b#3 test_8s::@8/(signed byte) print_sbyte::b#4 ) + [163] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 to:print_sbyte::@3 print_sbyte::@3: scope:[print_sbyte] from print_sbyte - [162] phi() - [163] call print_char + [164] phi() + [165] call print_char to:print_sbyte::@2 print_sbyte::@2: scope:[print_sbyte] from print_sbyte::@3 print_sbyte::@4 - [164] (signed byte) print_sbyte::b#7 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#10 ) - [165] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#7 - [166] call print_byte + [166] (signed byte) print_sbyte::b#7 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#10 ) + [167] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#7 + [168] call print_byte to:print_sbyte::@return print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@2 - [167] return + [169] return to:@return print_sbyte::@1: scope:[print_sbyte] from print_sbyte - [168] phi() - [169] call print_char + [170] phi() + [171] call print_char to:print_sbyte::@4 print_sbyte::@4: scope:[print_sbyte] from print_sbyte::@1 - [170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 + [172] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 to:print_sbyte::@2 div8s: scope:[div8s] from test_8s::@1 - [171] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1 + [173] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1 to:div8s::@7 div8s::@7: scope:[div8s] from div8s - [172] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 + [174] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 to:div8s::@2 div8s::@2: scope:[div8s] from div8s::@1 div8s::@7 - [173] (byte) div8s::dividendu#3 ← phi( div8s::@1/(byte~) div8s::dividendu#7 div8s::@7/(byte~) div8s::dividendu#8 ) - [173] (byte) div8s::neg#3 ← phi( div8s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 div8s::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [174] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3 + [175] (byte) div8s::dividendu#3 ← phi( div8s::@1/(byte~) div8s::dividendu#7 div8s::@7/(byte~) div8s::dividendu#8 ) + [175] (byte) div8s::neg#3 ← phi( div8s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 div8s::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [176] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3 to:div8s::@8 div8s::@8: scope:[div8s] from div8s::@2 - [175] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 + [177] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 to:div8s::@4 div8s::@4: scope:[div8s] from div8s::@3 div8s::@8 - [176] (byte) div8s::neg#4 ← phi( div8s::@3/(byte) div8s::neg#2 div8s::@8/(byte) div8s::neg#3 ) - [176] (byte) div8s::divisoru#3 ← phi( div8s::@3/(byte~) div8s::divisoru#4 div8s::@8/(byte~) div8s::divisoru#5 ) - [177] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 - [178] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 - [179] call div8u - [180] (byte) div8u::return#2 ← (byte) div8u::return#0 + [178] (byte) div8s::neg#4 ← phi( div8s::@3/(byte) div8s::neg#2 div8s::@8/(byte) div8s::neg#3 ) + [178] (byte) div8s::divisoru#3 ← phi( div8s::@3/(byte~) div8s::divisoru#4 div8s::@8/(byte~) div8s::divisoru#5 ) + [179] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 + [180] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 + [181] call div8u + [182] (byte) div8u::return#2 ← (byte) div8u::return#0 to:div8s::@6 div8s::@6: scope:[div8s] from div8s::@4 - [181] (byte) div8s::resultu#0 ← (byte) div8u::return#2 - [182] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@9 + [183] (byte) div8s::resultu#0 ← (byte) div8u::return#2 + [184] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@9 to:div8s::@5 div8s::@5: scope:[div8s] from div8s::@6 - [183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 - [184] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 + [185] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 + [186] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 to:div8s::@return div8s::@return: scope:[div8s] from div8s::@5 div8s::@9 - [185] (signed byte) rem8s#3 ← phi( div8s::@5/(signed byte) rem8s#2 div8s::@9/(signed byte~) rem8s#33 ) - [185] (signed byte) div8s::return#2 ← phi( div8s::@5/(signed byte) div8s::return#1 div8s::@9/(signed byte~) div8s::return#7 ) - [186] return + [187] (signed byte) rem8s#3 ← phi( div8s::@5/(signed byte) rem8s#2 div8s::@9/(signed byte~) rem8s#33 ) + [187] (signed byte) div8s::return#2 ← phi( div8s::@5/(signed byte) div8s::return#1 div8s::@9/(signed byte~) div8s::return#7 ) + [188] return to:@return div8s::@9: scope:[div8s] from div8s::@6 - [187] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 - [188] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 + [189] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 + [190] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 to:div8s::@return div8s::@3: scope:[div8s] from div8s::@2 - [189] (signed byte~) div8s::$8 ← - (signed byte) div8s::divisor#0 - [190] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 - [191] (byte~) div8s::divisoru#4 ← (byte)(signed byte~) div8s::$8 + [191] (signed byte~) div8s::$8 ← - (signed byte) div8s::divisor#0 + [192] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 + [193] (byte~) div8s::divisoru#4 ← (byte)(signed byte~) div8s::$8 to:div8s::@4 div8s::@1: scope:[div8s] from div8s - [192] (signed byte~) div8s::$5 ← - (signed byte) div8s::dividend#0 - [193] (byte~) div8s::dividendu#7 ← (byte)(signed byte~) div8s::$5 + [194] (signed byte~) div8s::$5 ← - (signed byte) div8s::dividend#0 + [195] (byte~) div8s::dividendu#7 ← (byte)(signed byte~) div8s::$5 to:div8s::@2 div8u: scope:[div8u] from div8s::@4 test_8u::@1 - [194] (byte) div8u::divisor#2 ← phi( div8s::@4/(byte) div8u::divisor#0 test_8u::@1/(byte) div8u::divisor#1 ) - [194] (byte) div8u::dividend#2 ← phi( div8s::@4/(byte) div8u::dividend#0 test_8u::@1/(byte) div8u::dividend#1 ) - [195] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 - [196] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 - [197] call divr8u - [198] (byte) divr8u::return#0 ← (byte) divr8u::return#1 + [196] (byte) div8u::divisor#2 ← phi( div8s::@4/(byte) div8u::divisor#0 test_8u::@1/(byte) div8u::divisor#1 ) + [196] (byte) div8u::dividend#2 ← phi( div8s::@4/(byte) div8u::dividend#0 test_8u::@1/(byte) div8u::dividend#1 ) + [197] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 + [198] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 + [199] call divr8u + [200] (byte) divr8u::return#0 ← (byte) divr8u::return#1 to:div8u::@1 div8u::@1: scope:[div8u] from div8u - [199] (byte) div8u::return#0 ← (byte) divr8u::return#0 + [201] (byte) div8u::return#0 ← (byte) divr8u::return#0 to:div8u::@return div8u::@return: scope:[div8u] from div8u::@1 - [200] return + [202] return to:@return divr8u: scope:[divr8u] from div8u - [201] phi() + [203] phi() to:divr8u::@1 divr8u::@1: scope:[divr8u] from divr8u divr8u::@3 - [202] (byte) divr8u::i#2 ← phi( divr8u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr8u::@3/(byte) divr8u::i#1 ) - [202] (byte) divr8u::quotient#3 ← phi( divr8u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr8u::@3/(byte) divr8u::return#1 ) - [202] (byte) divr8u::dividend#2 ← phi( divr8u/(byte) divr8u::dividend#0 divr8u::@3/(byte) divr8u::dividend#1 ) - [202] (byte) divr8u::rem#4 ← phi( divr8u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr8u::@3/(byte) divr8u::rem#10 ) - [203] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [204] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) $80 - [205] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2 + [204] (byte) divr8u::i#2 ← phi( divr8u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr8u::@3/(byte) divr8u::i#1 ) + [204] (byte) divr8u::quotient#3 ← phi( divr8u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr8u::@3/(byte) divr8u::return#1 ) + [204] (byte) divr8u::dividend#2 ← phi( divr8u/(byte) divr8u::dividend#0 divr8u::@3/(byte) divr8u::dividend#1 ) + [204] (byte) divr8u::rem#4 ← phi( divr8u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr8u::@3/(byte) divr8u::rem#10 ) + [205] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [206] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) $80 + [207] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2 to:divr8u::@4 divr8u::@4: scope:[divr8u] from divr8u::@1 - [206] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 + [208] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 to:divr8u::@2 divr8u::@2: scope:[divr8u] from divr8u::@1 divr8u::@4 - [207] (byte) divr8u::rem#5 ← phi( divr8u::@1/(byte) divr8u::rem#1 divr8u::@4/(byte) divr8u::rem#2 ) - [208] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [209] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [210] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 + [209] (byte) divr8u::rem#5 ← phi( divr8u::@1/(byte) divr8u::rem#1 divr8u::@4/(byte) divr8u::rem#2 ) + [210] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [211] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [212] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 to:divr8u::@5 divr8u::@5: scope:[divr8u] from divr8u::@2 - [211] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 - [212] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 + [213] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 + [214] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 to:divr8u::@3 divr8u::@3: scope:[divr8u] from divr8u::@2 divr8u::@5 - [213] (byte) divr8u::return#1 ← phi( divr8u::@2/(byte) divr8u::quotient#1 divr8u::@5/(byte) divr8u::quotient#2 ) - [213] (byte) divr8u::rem#10 ← phi( divr8u::@2/(byte) divr8u::rem#5 divr8u::@5/(byte) divr8u::rem#3 ) - [214] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 - [215] if((byte) divr8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto divr8u::@1 + [215] (byte) divr8u::return#1 ← phi( divr8u::@2/(byte) divr8u::quotient#1 divr8u::@5/(byte) divr8u::quotient#2 ) + [215] (byte) divr8u::rem#10 ← phi( divr8u::@2/(byte) divr8u::rem#5 divr8u::@5/(byte) divr8u::rem#3 ) + [216] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 + [217] if((byte) divr8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto divr8u::@1 to:divr8u::@6 divr8u::@6: scope:[divr8u] from divr8u::@3 - [216] (byte) rem8u#17 ← (byte) divr8u::rem#10 + [218] (byte) rem8u#17 ← (byte) divr8u::rem#10 to:divr8u::@return divr8u::@return: scope:[divr8u] from divr8u::@6 - [217] return + [219] return to:@return test_16u: scope:[test_16u] from main::@2 - [218] phi() + [220] phi() to:test_16u::@1 test_16u::@1: scope:[test_16u] from test_16u test_16u::@10 - [219] (byte) test_16u::i#10 ← phi( test_16u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_16u::@10/(byte) test_16u::i#1 ) - [220] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) - [221] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) - [222] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 - [223] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 - [224] call div16u - [225] (word) div16u::return#2 ← (word) div16u::return#0 + [221] (byte) test_16u::i#10 ← phi( test_16u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_16u::@10/(byte) test_16u::i#1 ) + [222] (byte) test_16u::$10 ← (byte) test_16u::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [223] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::$10) + [224] (byte) test_16u::$11 ← (byte) test_16u::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [225] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::$11) + [226] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 + [227] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 + [228] call div16u + [229] (word) div16u::return#2 ← (word) div16u::return#0 to:test_16u::@2 test_16u::@2: scope:[test_16u] from test_16u::@1 - [226] (word) test_16u::res#0 ← (word) div16u::return#2 - [227] (word) print_word::w#1 ← (word) test_16u::dividend#0 - [228] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1 - [229] call print_word + [230] (word) test_16u::res#0 ← (word) div16u::return#2 + [231] (word) print_word::w#1 ← (word) test_16u::dividend#0 + [232] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1 + [233] call print_word to:test_16u::@3 test_16u::@3: scope:[test_16u] from test_16u::@2 - [230] phi() - [231] call print_str - to:test_16u::@4 -test_16u::@4: scope:[test_16u] from test_16u::@3 - [232] (word) print_word::w#2 ← (word) test_16u::divisor#0 - [233] call print_word - to:test_16u::@5 -test_16u::@5: scope:[test_16u] from test_16u::@4 [234] phi() [235] call print_str - to:test_16u::@6 -test_16u::@6: scope:[test_16u] from test_16u::@5 - [236] (word) print_word::w#3 ← (word) test_16u::res#0 + to:test_16u::@4 +test_16u::@4: scope:[test_16u] from test_16u::@3 + [236] (word) print_word::w#2 ← (word) test_16u::divisor#0 [237] call print_word - to:test_16u::@7 -test_16u::@7: scope:[test_16u] from test_16u::@6 + to:test_16u::@5 +test_16u::@5: scope:[test_16u] from test_16u::@4 [238] phi() [239] call print_str + to:test_16u::@6 +test_16u::@6: scope:[test_16u] from test_16u::@5 + [240] (word) print_word::w#3 ← (word) test_16u::res#0 + [241] call print_word + to:test_16u::@7 +test_16u::@7: scope:[test_16u] from test_16u::@6 + [242] phi() + [243] call print_str to:test_16u::@8 test_16u::@8: scope:[test_16u] from test_16u::@7 - [240] (word) print_word::w#4 ← (word) rem16u#1 - [241] call print_word + [244] (word) print_word::w#4 ← (word) rem16u#1 + [245] call print_word to:test_16u::@9 test_16u::@9: scope:[test_16u] from test_16u::@8 - [242] phi() - [243] call print_ln + [246] phi() + [247] call print_ln to:test_16u::@10 test_16u::@10: scope:[test_16u] from test_16u::@9 - [244] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [245] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $c) goto test_16u::@1 + [248] (byte) test_16u::i#1 ← ++ (byte) test_16u::i#10 + [249] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_16u::@1 to:test_16u::@return test_16u::@return: scope:[test_16u] from test_16u::@10 - [246] return + [250] return to:@return div16u: scope:[div16u] from test_16u::@1 - [247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 - [248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 - [249] call divr16u - [250] (word) divr16u::return#2 ← (word) divr16u::return#0 + [251] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 + [252] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 + [253] call divr16u + [254] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div16u::@1 div16u::@1: scope:[div16u] from div16u - [251] (word) div16u::return#0 ← (word) divr16u::return#2 + [255] (word) div16u::return#0 ← (word) divr16u::return#2 to:div16u::@return div16u::@return: scope:[div16u] from div16u::@1 - [252] return + [256] return to:@return test_8u: scope:[test_8u] from main::@1 - [253] phi() + [257] phi() to:test_8u::@1 test_8u::@1: scope:[test_8u] from test_8u test_8u::@11 - [254] (byte*) print_line_cursor#41 ← phi( test_8u/((byte*))(word/signed word/dword/signed dword) $400 test_8u::@11/(byte*) print_line_cursor#1 ) - [254] (byte*) print_char_cursor#138 ← phi( test_8u/((byte*))(word/signed word/dword/signed dword) $400 test_8u::@11/(byte*~) print_char_cursor#188 ) - [254] (byte) test_8u::i#10 ← phi( test_8u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_8u::@11/(byte) test_8u::i#1 ) - [255] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) - [256] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) - [257] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 - [258] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 - [259] call div8u - [260] (byte) div8u::return#3 ← (byte) div8u::return#0 + [258] (byte*) print_line_cursor#41 ← phi( test_8u/((byte*))(word/signed word/dword/signed dword) $400 test_8u::@11/(byte*) print_line_cursor#1 ) + [258] (byte*) print_char_cursor#138 ← phi( test_8u/((byte*))(word/signed word/dword/signed dword) $400 test_8u::@11/(byte*~) print_char_cursor#188 ) + [258] (byte) test_8u::i#10 ← phi( test_8u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_8u::@11/(byte) test_8u::i#1 ) + [259] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) + [260] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) + [261] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 + [262] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 + [263] call div8u + [264] (byte) div8u::return#3 ← (byte) div8u::return#0 to:test_8u::@2 test_8u::@2: scope:[test_8u] from test_8u::@1 - [261] (byte) test_8u::res#0 ← (byte) div8u::return#3 - [262] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 - [263] call print_byte + [265] (byte) test_8u::res#0 ← (byte) div8u::return#3 + [266] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 + [267] call print_byte to:test_8u::@3 test_8u::@3: scope:[test_8u] from test_8u::@2 - [264] phi() - [265] call print_str - to:test_8u::@4 -test_8u::@4: scope:[test_8u] from test_8u::@3 - [266] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 - [267] call print_byte - to:test_8u::@5 -test_8u::@5: scope:[test_8u] from test_8u::@4 [268] phi() [269] call print_str - to:test_8u::@6 -test_8u::@6: scope:[test_8u] from test_8u::@5 - [270] (byte) print_byte::b#5 ← (byte) test_8u::res#0 + to:test_8u::@4 +test_8u::@4: scope:[test_8u] from test_8u::@3 + [270] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 [271] call print_byte - to:test_8u::@7 -test_8u::@7: scope:[test_8u] from test_8u::@6 + to:test_8u::@5 +test_8u::@5: scope:[test_8u] from test_8u::@4 [272] phi() [273] call print_str + to:test_8u::@6 +test_8u::@6: scope:[test_8u] from test_8u::@5 + [274] (byte) print_byte::b#5 ← (byte) test_8u::res#0 + [275] call print_byte + to:test_8u::@7 +test_8u::@7: scope:[test_8u] from test_8u::@6 + [276] phi() + [277] call print_str to:test_8u::@8 test_8u::@8: scope:[test_8u] from test_8u::@7 - [274] (byte) print_byte::b#6 ← (byte) rem8u#17 - [275] call print_byte + [278] (byte) print_byte::b#6 ← (byte) rem8u#17 + [279] call print_byte to:test_8u::@9 test_8u::@9: scope:[test_8u] from test_8u::@8 - [276] phi() - [277] call print_ln + [280] phi() + [281] call print_ln to:test_8u::@10 test_8u::@10: scope:[test_8u] from test_8u::@9 - [278] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 - [279] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@11 + [282] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 + [283] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@11 to:test_8u::@return test_8u::@return: scope:[test_8u] from test_8u::@10 - [280] return + [284] return to:@return test_8u::@11: scope:[test_8u] from test_8u::@10 - [281] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 + [285] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 to:test_8u::@1 print_cls: scope:[print_cls] from main - [282] phi() + [286] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [283] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) $400 print_cls::@1/(byte*) print_cls::sc#1 ) - [284] *((byte*) print_cls::sc#2) ← (byte) ' ' - [285] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [286] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 + [287] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) $400 print_cls::@1/(byte*) print_cls::sc#1 ) + [288] *((byte*) print_cls::sc#2) ← (byte) ' ' + [289] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [290] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [287] return + [291] return to:@return diff --git a/src/test/ref/test-division.log b/src/test/ref/test-division.log index 27d9d4f6e..6e02d606d 100644 --- a/src/test/ref/test-division.log +++ b/src/test/ref/test-division.log @@ -1,3 +1,7 @@ +Fixing pointer array-indexing *((word[]) test_16u::dividends + (byte) test_16u::i) +Fixing pointer array-indexing *((word[]) test_16u::divisors + (byte) test_16u::i) +Fixing pointer array-indexing *((signed word[]) test_16s::dividends + (byte) test_16s::i) +Fixing pointer array-indexing *((signed word[]) test_16s::divisors + (byte) test_16s::i) Identified constant variable (byte) test_8u::rem CONTROL FLOW GRAPH SSA @@ -921,8 +925,10 @@ test_16u::@1: scope:[test_16u] from test_16u test_16u::@11 (byte*) print_char_cursor#147 ← phi( test_16u/(byte*) print_char_cursor#153 test_16u::@11/(byte*) print_char_cursor#44 ) (word) rem16u#40 ← phi( test_16u/(word) rem16u#49 test_16u::@11/(word) rem16u#42 ) (byte) test_16u::i#2 ← phi( test_16u/(byte) test_16u::i#0 test_16u::@11/(byte) test_16u::i#1 ) - (word) test_16u::dividend#0 ← *((word[]) test_16u::dividends#0 + (byte) test_16u::i#2) - (word) test_16u::divisor#0 ← *((word[]) test_16u::divisors#0 + (byte) test_16u::i#2) + (byte) test_16u::$10 ← (byte) test_16u::i#2 * (const byte) SIZEOF_WORD + (word) test_16u::dividend#0 ← *((word[]) test_16u::dividends#0 + (byte) test_16u::$10) + (byte) test_16u::$11 ← (byte) test_16u::i#2 * (const byte) SIZEOF_WORD + (word) test_16u::divisor#0 ← *((word[]) test_16u::divisors#0 + (byte) test_16u::$11) (word) div16u::dividend#0 ← (word) test_16u::dividend#0 (word) div16u::divisor#0 ← (word) test_16u::divisor#0 call div16u @@ -1017,10 +1023,9 @@ test_16u::@11: scope:[test_16u] from test_16u::@10 (byte*) print_line_cursor#32 ← phi( test_16u::@10/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#13 ← (byte*) print_line_cursor#32 (byte*) print_char_cursor#44 ← (byte*) print_char_cursor#107 - (byte/signed word/word/dword/signed dword~) test_16u::$9 ← (byte) test_16u::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 2 - (byte) test_16u::i#1 ← (byte/signed word/word/dword/signed dword~) test_16u::$9 - (bool~) test_16u::$10 ← (byte) test_16u::i#1 != (byte/signed byte/word/signed word/dword/signed dword) $c - if((bool~) test_16u::$10) goto test_16u::@1 + (byte) test_16u::i#1 ← (byte) test_16u::i#3 + rangenext(0,5) + (bool~) test_16u::$9 ← (byte) test_16u::i#1 != rangelast(0,5) + if((bool~) test_16u::$9) goto test_16u::@1 to:test_16u::@return test_16u::@return: scope:[test_16u] from test_16u::@11 (byte*) print_line_cursor#33 ← phi( test_16u::@11/(byte*) print_line_cursor#13 ) @@ -1192,8 +1197,10 @@ test_16s::@1: scope:[test_16s] from test_16s test_16s::@11 (signed word) rem16s#22 ← phi( test_16s/(signed word) rem16s#27 test_16s::@11/(signed word) rem16s#24 ) (word) rem16u#43 ← phi( test_16s/(word) rem16u#52 test_16s::@11/(word) rem16u#44 ) (byte) test_16s::i#2 ← phi( test_16s/(byte) test_16s::i#0 test_16s::@11/(byte) test_16s::i#1 ) - (signed word) test_16s::dividend#0 ← *((signed word[]) test_16s::dividends#0 + (byte) test_16s::i#2) - (signed word) test_16s::divisor#0 ← *((signed word[]) test_16s::divisors#0 + (byte) test_16s::i#2) + (byte) test_16s::$16 ← (byte) test_16s::i#2 * (const byte) SIZEOF_SIGNED_WORD + (signed word) test_16s::dividend#0 ← *((signed word[]) test_16s::dividends#0 + (byte) test_16s::$16) + (byte) test_16s::$17 ← (byte) test_16s::i#2 * (const byte) SIZEOF_SIGNED_WORD + (signed word) test_16s::divisor#0 ← *((signed word[]) test_16s::divisors#0 + (byte) test_16s::$17) (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 call div16s @@ -1298,10 +1305,9 @@ test_16s::@11: scope:[test_16s] from test_16s::@10 (byte*) print_line_cursor#36 ← phi( test_16s::@10/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#17 ← (byte*) print_line_cursor#36 (byte*) print_char_cursor#62 ← (byte*) print_char_cursor#125 - (byte/signed word/word/dword/signed dword~) test_16s::$15 ← (byte) test_16s::i#3 + (byte/signed byte/word/signed word/dword/signed dword) 2 - (byte) test_16s::i#1 ← (byte/signed word/word/dword/signed dword~) test_16s::$15 - (bool~) test_16s::$16 ← (byte) test_16s::i#1 != (byte/signed byte/word/signed word/dword/signed dword) $c - if((bool~) test_16s::$16) goto test_16s::@1 + (byte) test_16s::i#1 ← (byte) test_16s::i#3 + rangenext(0,5) + (bool~) test_16s::$15 ← (byte) test_16s::i#1 != rangelast(0,5) + if((bool~) test_16s::$15) goto test_16s::@1 to:test_16s::@return test_16s::@return: scope:[test_16s] from test_16s::@11 (byte*) print_line_cursor#37 ← phi( test_16s::@11/(byte*) print_line_cursor#17 ) @@ -1351,6 +1357,8 @@ SYMBOL TABLE SSA (label) @33 (label) @begin (label) @end +(const byte) SIZEOF_SIGNED_WORD = (byte/signed byte/word/signed word/dword/signed dword) 2 +(const byte) SIZEOF_WORD = (byte/signed byte/word/signed word/dword/signed dword) 2 (signed word()) div16s((signed word) div16s::dividend , (signed word) div16s::divisor) (signed word~) div16s::$0 (label) div16s::@2 @@ -2321,8 +2329,9 @@ SYMBOL TABLE SSA (void()) test_16s() (signed word/signed dword~) test_16s::$0 (signed word/signed dword~) test_16s::$1 -(byte/signed word/word/dword/signed dword~) test_16s::$15 -(bool~) test_16s::$16 +(bool~) test_16s::$15 +(byte) test_16s::$16 +(byte) test_16s::$17 (signed word/signed dword~) test_16s::$2 (signed byte/signed word/signed dword~) test_16s::$3 (signed byte/signed word/signed dword~) test_16s::$4 @@ -2375,8 +2384,9 @@ SYMBOL TABLE SSA (const string) test_16s::str2 = (string) " @" (void()) test_16u() (word~) test_16u::$0 -(bool~) test_16u::$10 -(byte/signed word/word/dword/signed dword~) test_16u::$9 +(byte) test_16u::$10 +(byte) test_16u::$11 +(bool~) test_16u::$9 (label) test_16u::@1 (label) test_16u::@10 (label) test_16u::@11 @@ -2705,7 +2715,6 @@ Alias (byte*) print_char_cursor#105 = (byte*) print_char_cursor#42 Alias (byte*) print_char_cursor#106 = (byte*) print_char_cursor#43 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#107 = (byte*) print_char_cursor#44 (byte*) print_char_cursor#108 (byte*) print_char_cursor#45 -Alias (byte) test_16u::i#1 = (byte/signed word/word/dword/signed dword~) test_16u::$9 Alias (signed byte) div8s::return#3 = (signed byte) div8s::return#5 Alias (signed byte) test_8s::dividend#0 = (signed byte) test_8s::dividend#1 Alias (byte*) print_char_cursor#140 = (byte*) print_char_cursor#148 @@ -2742,7 +2751,6 @@ Alias (byte*) print_char_cursor#123 = (byte*) print_char_cursor#60 Alias (byte*) print_char_cursor#124 = (byte*) print_char_cursor#61 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#125 = (byte*) print_char_cursor#62 (byte*) print_char_cursor#126 (byte*) print_char_cursor#63 -Alias (byte) test_16s::i#1 = (byte/signed word/word/dword/signed dword~) test_16s::$15 Alias (signed word) rem16s#0 = (signed word) rem16s#25 Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#38 Alias (byte*) print_char_cursor#127 = (byte*) print_char_cursor#64 @@ -2928,9 +2936,9 @@ Simple Condition (bool~) div8s::$3 [264] if((byte) div8s::neg#4==(byte/signed by Simple Condition (bool~) divr16s::$3 [308] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 Simple Condition (bool~) divr16s::$5 [329] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@5 Simple Condition (bool~) test_8u::$9 [447] if((byte) test_8u::i#1!=rangelast(0,5)) goto test_8u::@1 -Simple Condition (bool~) test_16u::$10 [503] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $c) goto test_16u::@1 -Simple Condition (bool~) test_8s::$13 [563] if((byte) test_8s::i#1!=rangelast(0,5)) goto test_8s::@1 -Simple Condition (bool~) test_16s::$16 [627] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $c) goto test_16s::@1 +Simple Condition (bool~) test_16u::$9 [504] if((byte) test_16u::i#1!=rangelast(0,5)) goto test_16u::@1 +Simple Condition (bool~) test_8s::$13 [564] if((byte) test_8s::i#1!=rangelast(0,5)) goto test_8s::@1 +Simple Condition (bool~) test_16s::$15 [629] if((byte) test_16s::i#1!=rangelast(0,5)) goto test_16s::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Rewriting || if()-condition to two if()s [290] (bool~) divr16s::$2 ← (bool~) divr16s::$0 || (bool~) divr16s::$1 Successful SSA optimization Pass2ConditionalAndOrRewriting @@ -3002,7 +3010,7 @@ Constant (const signed word[]) test_16s::divisors#0 = { 5, test_16s::$3, $b, tes Successful SSA optimization Pass2ConstantIdentification Constant (const word) divr16s::remu#1 = ((word))divr16s::$10 Successful SSA optimization Pass2ConstantIdentification -if() condition always false - eliminating [256] if((const bool) divr16s::$1) goto divr16s::@1 +if() condition always false - eliminating [260] if((const bool) divr16s::$1) goto divr16s::@1 Successful SSA optimization Pass2ConstantIfs Successful SSA optimization Pass2ConstantStringConsolidation Successful SSA optimization PassNEliminateUnusedVars @@ -3033,8 +3041,17 @@ Resolved ranged next value divr16u::i#1 ← ++ divr16u::i#2 to ++ Resolved ranged comparison value if(divr16u::i#1!=rangelast(0,$f)) goto divr16u::@1 to (byte/signed byte/word/signed word/dword/signed dword) $10 Resolved ranged next value test_8u::i#1 ← ++ test_8u::i#10 to ++ Resolved ranged comparison value if(test_8u::i#1!=rangelast(0,5)) goto test_8u::@1 to (byte/signed byte/word/signed word/dword/signed dword) 6 +Resolved ranged next value test_16u::i#1 ← ++ test_16u::i#10 to ++ +Resolved ranged comparison value if(test_16u::i#1!=rangelast(0,5)) goto test_16u::@1 to (byte/signed byte/word/signed word/dword/signed dword) 6 Resolved ranged next value test_8s::i#1 ← ++ test_8s::i#10 to ++ Resolved ranged comparison value if(test_8s::i#1!=rangelast(0,5)) goto test_8s::@1 to (byte/signed byte/word/signed word/dword/signed dword) 6 +Resolved ranged next value test_16s::i#1 ← ++ test_16s::i#10 to ++ +Resolved ranged comparison value if(test_16s::i#1!=rangelast(0,5)) goto test_16s::@1 to (byte/signed byte/word/signed word/dword/signed dword) 6 +Rewriting multiplication to use shift (byte) test_16u::$10 ← (byte) test_16u::i#10 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift (byte) test_16u::$11 ← (byte) test_16u::i#10 * (const byte) SIZEOF_WORD +Rewriting multiplication to use shift (byte) test_16s::$16 ← (byte) test_16s::i#10 * (const byte) SIZEOF_SIGNED_WORD +Rewriting multiplication to use shift (byte) test_16s::$17 ← (byte) test_16s::i#10 * (const byte) SIZEOF_SIGNED_WORD +Successful SSA optimization Pass2MultiplyToShiftRewriting Culled Empty Block (label) print_ln::@2 Culled Empty Block (label) print_sword::@3 Culled Empty Block (label) print_sbyte::@6 @@ -3059,6 +3076,7 @@ Culled Empty Block (label) divr16s::@16 Successful SSA optimization Pass2CullEmptyBlocks Simple Condition (bool~) divr16s::$0 [115] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 Successful SSA optimization Pass2ConditionalJumpSimplification +Successful SSA optimization PassNEliminateUnusedVars Inlining constant with var siblings (const byte*) print_str::str#1 Inlining constant with var siblings (const byte*) print_str::str#2 Inlining constant with var siblings (const byte*) print_str::str#3 @@ -3201,129 +3219,129 @@ Adding NOP phi() at start of print_cls CALL GRAPH Calls in [] to main:2 Calls in [main] to print_cls:5 test_8u:7 test_16u:9 test_8s:11 test_16s:13 -Calls in [test_16s] to div16s:21 print_sword:27 print_str:29 print_sword:33 print_str:35 print_sword:39 print_str:41 print_sword:45 print_ln:47 -Calls in [print_sword] to print_char:62 print_word:69 -Calls in [print_word] to print_byte:77 print_byte:81 -Calls in [print_byte] to print_char:88 print_char:93 -Calls in [div16s] to divr16s:112 -Calls in [divr16s] to divr16u:129 -Calls in [test_8s] to div8s:183 print_sbyte:189 print_str:191 print_sbyte:195 print_str:197 print_sbyte:201 print_str:203 print_sbyte:207 print_ln:209 -Calls in [print_sbyte] to print_char:217 print_byte:222 print_char:225 -Calls in [div8s] to div8u:239 -Calls in [div8u] to divr8u:260 -Calls in [test_16u] to div16u:297 print_word:303 print_str:305 print_word:309 print_str:311 print_word:315 print_str:317 print_word:321 print_ln:323 -Calls in [div16u] to divr16u:332 -Calls in [test_8u] to div8u:344 print_byte:350 print_str:352 print_byte:356 print_str:358 print_byte:362 print_str:364 print_byte:368 print_ln:370 +Calls in [test_16s] to div16s:23 print_sword:29 print_str:31 print_sword:35 print_str:37 print_sword:41 print_str:43 print_sword:47 print_ln:49 +Calls in [print_sword] to print_char:64 print_word:71 +Calls in [print_word] to print_byte:79 print_byte:83 +Calls in [print_byte] to print_char:90 print_char:95 +Calls in [div16s] to divr16s:114 +Calls in [divr16s] to divr16u:131 +Calls in [test_8s] to div8s:185 print_sbyte:191 print_str:193 print_sbyte:197 print_str:199 print_sbyte:203 print_str:205 print_sbyte:209 print_ln:211 +Calls in [print_sbyte] to print_char:219 print_byte:224 print_char:227 +Calls in [div8s] to div8u:241 +Calls in [div8u] to divr8u:262 +Calls in [test_16u] to div16u:301 print_word:307 print_str:309 print_word:313 print_str:315 print_word:319 print_str:321 print_word:325 print_ln:327 +Calls in [div16u] to divr16u:336 +Calls in [test_8u] to div8u:348 print_byte:354 print_str:356 print_byte:360 print_str:362 print_byte:366 print_str:368 print_byte:372 print_ln:374 Created 57 initial phi equivalence classes -Coalesced [25] print_sword::w#9 ← print_sword::w#1 -Not coalescing [26] print_char_cursor#159 ← print_line_cursor#1 -Coalesced [31] print_sword::w#10 ← print_sword::w#2 -Coalesced [32] print_char_cursor#160 ← print_char_cursor#128 -Coalesced [37] print_sword::w#11 ← print_sword::w#3 -Coalesced (already) [38] print_char_cursor#161 ← print_char_cursor#128 -Coalesced [43] print_sword::w#12 ← print_sword::w#4 -Coalesced (already) [44] print_char_cursor#162 ← print_char_cursor#128 -Coalesced [46] print_line_cursor#87 ← print_line_cursor#1 -Coalesced [51] test_16s::i#12 ← test_16s::i#1 -Coalesced [53] print_line_cursor#91 ← print_line_cursor#39 -Coalesced (already) [58] print_line_cursor#92 ← print_line_cursor#1 -Coalesced [61] print_char_cursor#181 ← print_char_cursor#131 -Coalesced [64] print_sword::w#14 ← print_sword::w#0 -Coalesced [65] print_char_cursor#164 ← print_char_cursor#18 -Coalesced [68] print_char_cursor#165 ← print_char_cursor#130 -Coalesced [71] print_sword::w#13 ← print_sword::w#5 -Coalesced [72] print_char_cursor#163 ← print_char_cursor#131 -Coalesced [75] print_byte::b#10 ← print_byte::b#1 -Coalesced [76] print_char_cursor#171 ← print_char_cursor#135 -Coalesced [79] print_byte::b#11 ← print_byte::b#2 -Coalesced (already) [80] print_char_cursor#172 ← print_char_cursor#18 -Coalesced [86] print_char::ch#6 ← print_char::ch#3 -Coalesced (already) [87] print_char_cursor#177 ← print_char_cursor#136 -Coalesced [91] print_char::ch#7 ← print_char::ch#4 -Coalesced (already) [92] print_char_cursor#178 ← print_char_cursor#18 -Coalesced [100] print_str::str#16 ← print_str::str#15 -Coalesced (already) [101] print_char_cursor#182 ← print_char_cursor#18 -Coalesced [108] print_str::str#17 ← print_str::str#0 -Coalesced [109] print_char_cursor#183 ← print_char_cursor#1 -Coalesced [121] divr16s::neg#10 ← divr16s::neg#3 -Coalesced [126] divr16u::rem#12 ← divr16u::rem#4 -Coalesced [127] divr16u::dividend#10 ← divr16u::dividend#2 -Coalesced [128] divr16u::divisor#9 ← divr16u::divisor#1 -Coalesced [135] divr16s::return#6 ← divr16s::return#1 -Coalesced [136] rem16s#36 ← rem16s#2 -Coalesced [144] divr16s::neg#9 ← divr16s::neg#2 -Coalesced [148] divr16u::rem#13 ← divr16u::rem#10 -Coalesced [149] divr16u::dividend#11 ← divr16u::dividend#5 -Coalesced [156] divr16u::rem#16 ← divr16u::rem#1 -Coalesced [163] divr16u::rem#18 ← divr16u::rem#2 -Coalesced [164] divr16u::return#8 ← divr16u::quotient#2 -Coalesced [170] divr16u::rem#14 ← divr16u::rem#11 -Coalesced [171] divr16u::dividend#12 ← divr16u::dividend#0 -Coalesced [172] divr16u::quotient#9 ← divr16u::return#0 -Coalesced [173] divr16u::i#7 ← divr16u::i#1 -Coalesced [174] divr16u::rem#17 ← divr16u::rem#6 -Coalesced [175] divr16u::return#7 ← divr16u::quotient#1 -Coalesced [176] divr16u::rem#15 ← divr16u::rem#0 -Coalesced [187] print_sbyte::b#11 ← print_sbyte::b#1 -Not coalescing [188] print_char_cursor#184 ← print_line_cursor#1 -Coalesced [193] print_sbyte::b#12 ← print_sbyte::b#2 -Coalesced [194] print_char_cursor#185 ← print_char_cursor#128 -Coalesced [199] print_sbyte::b#13 ← print_sbyte::b#3 -Coalesced (already) [200] print_char_cursor#186 ← print_char_cursor#128 -Coalesced [205] print_sbyte::b#14 ← print_sbyte::b#4 -Coalesced (already) [206] print_char_cursor#187 ← print_char_cursor#128 -Coalesced (already) [208] print_line_cursor#89 ← print_line_cursor#1 -Coalesced [213] test_8s::i#12 ← test_8s::i#1 -Coalesced (already) [216] print_char_cursor#180 ← print_char_cursor#132 -Coalesced [218] print_sbyte::b#16 ← print_sbyte::b#10 -Coalesced (already) [221] print_char_cursor#170 ← print_char_cursor#18 -Coalesced (already) [224] print_char_cursor#179 ← print_char_cursor#132 -Coalesced [227] print_sbyte::b#15 ← print_sbyte::b#0 -Coalesced [233] div8s::neg#10 ← div8s::neg#3 -Coalesced [237] div8u::dividend#3 ← div8u::dividend#0 -Coalesced [238] div8u::divisor#3 ← div8u::divisor#0 -Coalesced [245] div8s::return#6 ← div8s::return#1 -Coalesced [246] rem8s#32 ← rem8s#2 -Coalesced [254] div8s::neg#9 ← div8s::neg#2 -Coalesced [264] divr8u::dividend#8 ← divr8u::dividend#0 -Coalesced [270] divr8u::rem#13 ← divr8u::rem#2 -Coalesced [277] divr8u::rem#15 ← divr8u::rem#3 -Coalesced [278] divr8u::return#6 ← divr8u::quotient#2 -Coalesced [284] divr8u::rem#11 ← divr8u::rem#10 -Coalesced [285] divr8u::dividend#9 ← divr8u::dividend#1 -Coalesced [286] divr8u::quotient#9 ← divr8u::return#1 -Coalesced [287] divr8u::i#7 ← divr8u::i#1 -Coalesced [288] divr8u::rem#14 ← divr8u::rem#5 -Coalesced [289] divr8u::return#5 ← divr8u::quotient#1 -Coalesced [290] divr8u::rem#12 ← divr8u::rem#1 -Coalesced [301] print_word::w#8 ← print_word::w#1 -Not coalescing [302] print_char_cursor#166 ← print_line_cursor#1 -Coalesced [307] print_word::w#9 ← print_word::w#2 -Coalesced (already) [308] print_char_cursor#167 ← print_char_cursor#128 -Coalesced [313] print_word::w#10 ← print_word::w#3 -Coalesced (already) [314] print_char_cursor#168 ← print_char_cursor#128 -Coalesced [319] print_word::w#11 ← print_word::w#4 -Coalesced (already) [320] print_char_cursor#169 ← print_char_cursor#128 -Coalesced (already) [322] print_line_cursor#88 ← print_line_cursor#1 -Coalesced [327] test_16u::i#12 ← test_16u::i#1 -Coalesced [330] divr16u::dividend#9 ← divr16u::dividend#1 -Coalesced [331] divr16u::divisor#8 ← divr16u::divisor#0 -Coalesced [342] div8u::dividend#4 ← div8u::dividend#1 -Coalesced [343] div8u::divisor#4 ← div8u::divisor#1 -Coalesced [348] print_byte::b#12 ← print_byte::b#3 -Coalesced [349] print_char_cursor#173 ← print_char_cursor#138 -Coalesced [354] print_byte::b#13 ← print_byte::b#4 -Coalesced (already) [355] print_char_cursor#174 ← print_char_cursor#128 -Coalesced [360] print_byte::b#14 ← print_byte::b#5 -Coalesced (already) [361] print_char_cursor#175 ← print_char_cursor#128 -Coalesced [366] print_byte::b#15 ← print_byte::b#6 -Coalesced (already) [367] print_char_cursor#176 ← print_char_cursor#128 -Coalesced [369] print_line_cursor#90 ← print_line_cursor#41 -Coalesced [374] test_8u::i#12 ← test_8u::i#1 -Not coalescing [375] print_char_cursor#188 ← print_line_cursor#1 -Coalesced (already) [376] print_line_cursor#93 ← print_line_cursor#1 -Coalesced [383] print_cls::sc#3 ← print_cls::sc#1 +Coalesced [27] print_sword::w#9 ← print_sword::w#1 +Not coalescing [28] print_char_cursor#159 ← print_line_cursor#1 +Coalesced [33] print_sword::w#10 ← print_sword::w#2 +Coalesced [34] print_char_cursor#160 ← print_char_cursor#128 +Coalesced [39] print_sword::w#11 ← print_sword::w#3 +Coalesced (already) [40] print_char_cursor#161 ← print_char_cursor#128 +Coalesced [45] print_sword::w#12 ← print_sword::w#4 +Coalesced (already) [46] print_char_cursor#162 ← print_char_cursor#128 +Coalesced [48] print_line_cursor#87 ← print_line_cursor#1 +Coalesced [53] test_16s::i#12 ← test_16s::i#1 +Coalesced [55] print_line_cursor#91 ← print_line_cursor#39 +Coalesced (already) [60] print_line_cursor#92 ← print_line_cursor#1 +Coalesced [63] print_char_cursor#181 ← print_char_cursor#131 +Coalesced [66] print_sword::w#14 ← print_sword::w#0 +Coalesced [67] print_char_cursor#164 ← print_char_cursor#18 +Coalesced [70] print_char_cursor#165 ← print_char_cursor#130 +Coalesced [73] print_sword::w#13 ← print_sword::w#5 +Coalesced [74] print_char_cursor#163 ← print_char_cursor#131 +Coalesced [77] print_byte::b#10 ← print_byte::b#1 +Coalesced [78] print_char_cursor#171 ← print_char_cursor#135 +Coalesced [81] print_byte::b#11 ← print_byte::b#2 +Coalesced (already) [82] print_char_cursor#172 ← print_char_cursor#18 +Coalesced [88] print_char::ch#6 ← print_char::ch#3 +Coalesced (already) [89] print_char_cursor#177 ← print_char_cursor#136 +Coalesced [93] print_char::ch#7 ← print_char::ch#4 +Coalesced (already) [94] print_char_cursor#178 ← print_char_cursor#18 +Coalesced [102] print_str::str#16 ← print_str::str#15 +Coalesced (already) [103] print_char_cursor#182 ← print_char_cursor#18 +Coalesced [110] print_str::str#17 ← print_str::str#0 +Coalesced [111] print_char_cursor#183 ← print_char_cursor#1 +Coalesced [123] divr16s::neg#10 ← divr16s::neg#3 +Coalesced [128] divr16u::rem#12 ← divr16u::rem#4 +Coalesced [129] divr16u::dividend#10 ← divr16u::dividend#2 +Coalesced [130] divr16u::divisor#9 ← divr16u::divisor#1 +Coalesced [137] divr16s::return#6 ← divr16s::return#1 +Coalesced [138] rem16s#36 ← rem16s#2 +Coalesced [146] divr16s::neg#9 ← divr16s::neg#2 +Coalesced [150] divr16u::rem#13 ← divr16u::rem#10 +Coalesced [151] divr16u::dividend#11 ← divr16u::dividend#5 +Coalesced [158] divr16u::rem#16 ← divr16u::rem#1 +Coalesced [165] divr16u::rem#18 ← divr16u::rem#2 +Coalesced [166] divr16u::return#8 ← divr16u::quotient#2 +Coalesced [172] divr16u::rem#14 ← divr16u::rem#11 +Coalesced [173] divr16u::dividend#12 ← divr16u::dividend#0 +Coalesced [174] divr16u::quotient#9 ← divr16u::return#0 +Coalesced [175] divr16u::i#7 ← divr16u::i#1 +Coalesced [176] divr16u::rem#17 ← divr16u::rem#6 +Coalesced [177] divr16u::return#7 ← divr16u::quotient#1 +Coalesced [178] divr16u::rem#15 ← divr16u::rem#0 +Coalesced [189] print_sbyte::b#11 ← print_sbyte::b#1 +Not coalescing [190] print_char_cursor#184 ← print_line_cursor#1 +Coalesced [195] print_sbyte::b#12 ← print_sbyte::b#2 +Coalesced [196] print_char_cursor#185 ← print_char_cursor#128 +Coalesced [201] print_sbyte::b#13 ← print_sbyte::b#3 +Coalesced (already) [202] print_char_cursor#186 ← print_char_cursor#128 +Coalesced [207] print_sbyte::b#14 ← print_sbyte::b#4 +Coalesced (already) [208] print_char_cursor#187 ← print_char_cursor#128 +Coalesced (already) [210] print_line_cursor#89 ← print_line_cursor#1 +Coalesced [215] test_8s::i#12 ← test_8s::i#1 +Coalesced (already) [218] print_char_cursor#180 ← print_char_cursor#132 +Coalesced [220] print_sbyte::b#16 ← print_sbyte::b#10 +Coalesced (already) [223] print_char_cursor#170 ← print_char_cursor#18 +Coalesced (already) [226] print_char_cursor#179 ← print_char_cursor#132 +Coalesced [229] print_sbyte::b#15 ← print_sbyte::b#0 +Coalesced [235] div8s::neg#10 ← div8s::neg#3 +Coalesced [239] div8u::dividend#3 ← div8u::dividend#0 +Coalesced [240] div8u::divisor#3 ← div8u::divisor#0 +Coalesced [247] div8s::return#6 ← div8s::return#1 +Coalesced [248] rem8s#32 ← rem8s#2 +Coalesced [256] div8s::neg#9 ← div8s::neg#2 +Coalesced [266] divr8u::dividend#8 ← divr8u::dividend#0 +Coalesced [272] divr8u::rem#13 ← divr8u::rem#2 +Coalesced [279] divr8u::rem#15 ← divr8u::rem#3 +Coalesced [280] divr8u::return#6 ← divr8u::quotient#2 +Coalesced [286] divr8u::rem#11 ← divr8u::rem#10 +Coalesced [287] divr8u::dividend#9 ← divr8u::dividend#1 +Coalesced [288] divr8u::quotient#9 ← divr8u::return#1 +Coalesced [289] divr8u::i#7 ← divr8u::i#1 +Coalesced [290] divr8u::rem#14 ← divr8u::rem#5 +Coalesced [291] divr8u::return#5 ← divr8u::quotient#1 +Coalesced [292] divr8u::rem#12 ← divr8u::rem#1 +Coalesced [305] print_word::w#8 ← print_word::w#1 +Not coalescing [306] print_char_cursor#166 ← print_line_cursor#1 +Coalesced [311] print_word::w#9 ← print_word::w#2 +Coalesced (already) [312] print_char_cursor#167 ← print_char_cursor#128 +Coalesced [317] print_word::w#10 ← print_word::w#3 +Coalesced (already) [318] print_char_cursor#168 ← print_char_cursor#128 +Coalesced [323] print_word::w#11 ← print_word::w#4 +Coalesced (already) [324] print_char_cursor#169 ← print_char_cursor#128 +Coalesced (already) [326] print_line_cursor#88 ← print_line_cursor#1 +Coalesced [331] test_16u::i#12 ← test_16u::i#1 +Coalesced [334] divr16u::dividend#9 ← divr16u::dividend#1 +Coalesced [335] divr16u::divisor#8 ← divr16u::divisor#0 +Coalesced [346] div8u::dividend#4 ← div8u::dividend#1 +Coalesced [347] div8u::divisor#4 ← div8u::divisor#1 +Coalesced [352] print_byte::b#12 ← print_byte::b#3 +Coalesced [353] print_char_cursor#173 ← print_char_cursor#138 +Coalesced [358] print_byte::b#13 ← print_byte::b#4 +Coalesced (already) [359] print_char_cursor#174 ← print_char_cursor#128 +Coalesced [364] print_byte::b#14 ← print_byte::b#5 +Coalesced (already) [365] print_char_cursor#175 ← print_char_cursor#128 +Coalesced [370] print_byte::b#15 ← print_byte::b#6 +Coalesced (already) [371] print_char_cursor#176 ← print_char_cursor#128 +Coalesced [373] print_line_cursor#90 ← print_line_cursor#41 +Coalesced [378] test_8u::i#12 ← test_8u::i#1 +Not coalescing [379] print_char_cursor#188 ← print_line_cursor#1 +Coalesced (already) [380] print_line_cursor#93 ← print_line_cursor#1 +Coalesced [387] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 35 phi equivalence classes Culled Empty Block (label) test_16s::@12 Culled Empty Block (label) print_ln::@3 @@ -3462,550 +3480,554 @@ test_16s: scope:[test_16s] from main::@4 to:test_16s::@1 test_16s::@1: scope:[test_16s] from test_16s test_16s::@10 [16] (byte) test_16s::i#10 ← phi( test_16s/(byte/signed byte/word/signed word/dword/signed dword) 0 test_16s::@10/(byte) test_16s::i#1 ) - [17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10) - [18] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::i#10) - [19] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 - [20] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 - [21] call div16s - [22] (signed word) div16s::return#2 ← (signed word) div16s::return#0 + [17] (byte) test_16s::$16 ← (byte) test_16s::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [18] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::$16) + [19] (byte) test_16s::$17 ← (byte) test_16s::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [20] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::$17) + [21] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 + [22] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 + [23] call div16s + [24] (signed word) div16s::return#2 ← (signed word) div16s::return#0 to:test_16s::@2 test_16s::@2: scope:[test_16s] from test_16s::@1 - [23] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 - [24] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 - [25] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 - [26] call print_sword + [25] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 + [26] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 + [27] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 + [28] call print_sword to:test_16s::@3 test_16s::@3: scope:[test_16s] from test_16s::@2 - [27] phi() - [28] call print_str + [29] phi() + [30] call print_str to:test_16s::@4 test_16s::@4: scope:[test_16s] from test_16s::@3 - [29] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 - [30] call print_sword + [31] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 + [32] call print_sword to:test_16s::@5 test_16s::@5: scope:[test_16s] from test_16s::@4 - [31] phi() - [32] call print_str + [33] phi() + [34] call print_str to:test_16s::@6 test_16s::@6: scope:[test_16s] from test_16s::@5 - [33] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 - [34] call print_sword + [35] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 + [36] call print_sword to:test_16s::@7 test_16s::@7: scope:[test_16s] from test_16s::@6 - [35] phi() - [36] call print_str + [37] phi() + [38] call print_str to:test_16s::@8 test_16s::@8: scope:[test_16s] from test_16s::@7 - [37] (signed word) print_sword::w#4 ← (signed word) rem16s#11 - [38] call print_sword + [39] (signed word) print_sword::w#4 ← (signed word) rem16s#11 + [40] call print_sword to:test_16s::@9 test_16s::@9: scope:[test_16s] from test_16s::@8 - [39] phi() - [40] call print_ln + [41] phi() + [42] call print_ln to:test_16s::@10 test_16s::@10: scope:[test_16s] from test_16s::@9 - [41] (byte) test_16s::i#1 ← (byte) test_16s::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [42] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $c) goto test_16s::@1 + [43] (byte) test_16s::i#1 ← ++ (byte) test_16s::i#10 + [44] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_16s::@1 to:test_16s::@return test_16s::@return: scope:[test_16s] from test_16s::@10 - [43] return + [45] return to:@return print_ln: scope:[print_ln] from test_16s::@9 test_16u::@9 test_8s::@9 test_8u::@9 - [44] (byte*) print_line_cursor#39 ← phi( test_16s::@9/(byte*) print_line_cursor#1 test_16u::@9/(byte*) print_line_cursor#1 test_8s::@9/(byte*) print_line_cursor#1 test_8u::@9/(byte*) print_line_cursor#41 ) + [46] (byte*) print_line_cursor#39 ← phi( test_16s::@9/(byte*) print_line_cursor#1 test_16u::@9/(byte*) print_line_cursor#1 test_8s::@9/(byte*) print_line_cursor#1 test_8u::@9/(byte*) print_line_cursor#41 ) to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - [45] (byte*) print_line_cursor#20 ← phi( print_ln/(byte*) print_line_cursor#39 print_ln::@1/(byte*) print_line_cursor#1 ) - [46] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) $28 - [47] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 + [47] (byte*) print_line_cursor#20 ← phi( print_ln/(byte*) print_line_cursor#39 print_ln::@1/(byte*) print_line_cursor#1 ) + [48] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) $28 + [49] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 - [48] return + [50] return to:@return print_sword: scope:[print_sword] from test_16s::@2 test_16s::@4 test_16s::@6 test_16s::@8 - [49] (byte*) print_char_cursor#131 ← phi( test_16s::@2/(byte*~) print_char_cursor#159 test_16s::@4/(byte*) print_char_cursor#128 test_16s::@6/(byte*) print_char_cursor#128 test_16s::@8/(byte*) print_char_cursor#128 ) - [49] (signed word) print_sword::w#5 ← phi( test_16s::@2/(signed word) print_sword::w#1 test_16s::@4/(signed word) print_sword::w#2 test_16s::@6/(signed word) print_sword::w#3 test_16s::@8/(signed word) print_sword::w#4 ) - [50] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 + [51] (byte*) print_char_cursor#131 ← phi( test_16s::@2/(byte*~) print_char_cursor#159 test_16s::@4/(byte*) print_char_cursor#128 test_16s::@6/(byte*) print_char_cursor#128 test_16s::@8/(byte*) print_char_cursor#128 ) + [51] (signed word) print_sword::w#5 ← phi( test_16s::@2/(signed word) print_sword::w#1 test_16s::@4/(signed word) print_sword::w#2 test_16s::@6/(signed word) print_sword::w#3 test_16s::@8/(signed word) print_sword::w#4 ) + [52] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 to:print_sword::@2 print_sword::@2: scope:[print_sword] from print_sword - [51] phi() - [52] call print_char + [53] phi() + [54] call print_char to:print_sword::@3 print_sword::@3: scope:[print_sword] from print_sword::@2 - [53] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 + [55] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 to:print_sword::@1 print_sword::@1: scope:[print_sword] from print_sword print_sword::@3 - [54] (byte*) print_char_cursor#130 ← phi( print_sword/(byte*) print_char_cursor#131 print_sword::@3/(byte*) print_char_cursor#18 ) - [54] (signed word) print_sword::w#6 ← phi( print_sword/(signed word) print_sword::w#5 print_sword::@3/(signed word) print_sword::w#0 ) - [55] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 - [56] call print_word + [56] (byte*) print_char_cursor#130 ← phi( print_sword/(byte*) print_char_cursor#131 print_sword::@3/(byte*) print_char_cursor#18 ) + [56] (signed word) print_sword::w#6 ← phi( print_sword/(signed word) print_sword::w#5 print_sword::@3/(signed word) print_sword::w#0 ) + [57] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 + [58] call print_word to:print_sword::@return print_sword::@return: scope:[print_sword] from print_sword::@1 - [57] return + [59] return to:@return print_word: scope:[print_word] from print_sword::@1 test_16u::@2 test_16u::@4 test_16u::@6 test_16u::@8 - [58] (byte*) print_char_cursor#135 ← phi( print_sword::@1/(byte*) print_char_cursor#130 test_16u::@2/(byte*~) print_char_cursor#166 test_16u::@4/(byte*) print_char_cursor#128 test_16u::@6/(byte*) print_char_cursor#128 test_16u::@8/(byte*) print_char_cursor#128 ) - [58] (word) print_word::w#5 ← phi( print_sword::@1/(word~) print_word::w#7 test_16u::@2/(word) print_word::w#1 test_16u::@4/(word) print_word::w#2 test_16u::@6/(word) print_word::w#3 test_16u::@8/(word) print_word::w#4 ) - [59] (byte) print_byte::b#1 ← > (word) print_word::w#5 - [60] call print_byte + [60] (byte*) print_char_cursor#135 ← phi( print_sword::@1/(byte*) print_char_cursor#130 test_16u::@2/(byte*~) print_char_cursor#166 test_16u::@4/(byte*) print_char_cursor#128 test_16u::@6/(byte*) print_char_cursor#128 test_16u::@8/(byte*) print_char_cursor#128 ) + [60] (word) print_word::w#5 ← phi( print_sword::@1/(word~) print_word::w#7 test_16u::@2/(word) print_word::w#1 test_16u::@4/(word) print_word::w#2 test_16u::@6/(word) print_word::w#3 test_16u::@8/(word) print_word::w#4 ) + [61] (byte) print_byte::b#1 ← > (word) print_word::w#5 + [62] call print_byte to:print_word::@1 print_word::@1: scope:[print_word] from print_word - [61] (byte) print_byte::b#2 ← < (word) print_word::w#5 - [62] call print_byte + [63] (byte) print_byte::b#2 ← < (word) print_word::w#5 + [64] call print_byte to:print_word::@return print_word::@return: scope:[print_word] from print_word::@1 - [63] return + [65] return to:@return print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 test_8u::@2 test_8u::@4 test_8u::@6 test_8u::@8 - [64] (byte*) print_char_cursor#136 ← phi( print_sbyte::@2/(byte*) print_char_cursor#18 print_word/(byte*) print_char_cursor#135 print_word::@1/(byte*) print_char_cursor#18 test_8u::@2/(byte*) print_char_cursor#138 test_8u::@4/(byte*) print_char_cursor#128 test_8u::@6/(byte*) print_char_cursor#128 test_8u::@8/(byte*) print_char_cursor#128 ) - [64] (byte) print_byte::b#7 ← phi( print_sbyte::@2/(byte~) print_byte::b#9 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 test_8u::@2/(byte) print_byte::b#3 test_8u::@4/(byte) print_byte::b#4 test_8u::@6/(byte) print_byte::b#5 test_8u::@8/(byte) print_byte::b#6 ) - [65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [66] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [67] call print_char + [66] (byte*) print_char_cursor#136 ← phi( print_sbyte::@2/(byte*) print_char_cursor#18 print_word/(byte*) print_char_cursor#135 print_word::@1/(byte*) print_char_cursor#18 test_8u::@2/(byte*) print_char_cursor#138 test_8u::@4/(byte*) print_char_cursor#128 test_8u::@6/(byte*) print_char_cursor#128 test_8u::@8/(byte*) print_char_cursor#128 ) + [66] (byte) print_byte::b#7 ← phi( print_sbyte::@2/(byte~) print_byte::b#9 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 test_8u::@2/(byte) print_byte::b#3 test_8u::@4/(byte) print_byte::b#4 test_8u::@6/(byte) print_byte::b#5 test_8u::@8/(byte) print_byte::b#6 ) + [67] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [68] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [69] call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) $f - [69] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [70] call print_char + [70] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) $f + [71] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [72] call print_char to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 - [71] return + [73] return to:@return print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@2 - [72] (byte*) print_char_cursor#82 ← phi( print_byte/(byte*) print_char_cursor#136 print_byte::@1/(byte*) print_char_cursor#18 print_sbyte::@1/(byte*) print_char_cursor#132 print_sbyte::@3/(byte*) print_char_cursor#132 print_sword::@2/(byte*) print_char_cursor#131 ) - [72] (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@2/(byte) '-' ) - [73] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 - [74] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 + [74] (byte*) print_char_cursor#82 ← phi( print_byte/(byte*) print_char_cursor#136 print_byte::@1/(byte*) print_char_cursor#18 print_sbyte::@1/(byte*) print_char_cursor#132 print_sbyte::@3/(byte*) print_char_cursor#132 print_sword::@2/(byte*) print_char_cursor#131 ) + [74] (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@2/(byte) '-' ) + [75] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 + [76] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [75] return + [77] return to:@return print_str: scope:[print_str] from test_16s::@3 test_16s::@5 test_16s::@7 test_16u::@3 test_16u::@5 test_16u::@7 test_8s::@3 test_8s::@5 test_8s::@7 test_8u::@3 test_8u::@5 test_8u::@7 - [76] (byte*) print_str::str#15 ← phi( test_16s::@3/(const string) str test_16s::@5/(const string) str1 test_16s::@7/(const string) str2 test_16u::@3/(const string) str test_16u::@5/(const string) str1 test_16u::@7/(const string) str2 test_8s::@3/(const string) str test_8s::@5/(const string) str1 test_8s::@7/(const string) str2 test_8u::@3/(const string) str test_8u::@5/(const string) str1 test_8u::@7/(const string) str2 ) + [78] (byte*) print_str::str#15 ← phi( test_16s::@3/(const string) str test_16s::@5/(const string) str1 test_16s::@7/(const string) str2 test_16u::@3/(const string) str test_16u::@5/(const string) str1 test_16u::@7/(const string) str2 test_8s::@3/(const string) str test_8s::@5/(const string) str1 test_8s::@7/(const string) str2 test_8u::@3/(const string) str test_8u::@5/(const string) str1 test_8u::@7/(const string) str2 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 - [77] (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#18 print_str::@2/(byte*) print_char_cursor#1 ) - [77] (byte*) print_str::str#13 ← phi( print_str/(byte*) print_str::str#15 print_str::@2/(byte*) print_str::str#0 ) - [78] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 + [79] (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#18 print_str::@2/(byte*) print_char_cursor#1 ) + [79] (byte*) print_str::str#13 ← phi( print_str/(byte*) print_str::str#15 print_str::@2/(byte*) print_str::str#0 ) + [80] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 to:print_str::@return print_str::@return: scope:[print_str] from print_str::@1 - [79] return + [81] return to:@return print_str::@2: scope:[print_str] from print_str::@1 - [80] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) - [81] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 - [82] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 + [82] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) + [83] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 + [84] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 to:print_str::@1 div16s: scope:[div16s] from test_16s::@1 - [83] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 - [84] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 - [85] call divr16s - [86] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + [85] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 + [86] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 + [87] call divr16s + [88] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 to:div16s::@1 div16s::@1: scope:[div16s] from div16s - [87] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 + [89] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 to:div16s::@return div16s::@return: scope:[div16s] from div16s::@1 - [88] return + [90] return to:@return divr16s: scope:[divr16s] from div16s - [89] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 + [91] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 to:divr16s::@7 divr16s::@7: scope:[divr16s] from divr16s - [90] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 + [92] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 to:divr16s::@2 divr16s::@2: scope:[divr16s] from divr16s::@1 divr16s::@7 - [91] (word) divr16s::remu#3 ← phi( divr16s::@1/((word))-(const signed word) divr16s::rem#0 divr16s::@7/((word))(const signed word) divr16s::rem#0 ) - [91] (word) divr16s::dividendu#3 ← phi( divr16s::@1/(word~) divr16s::dividendu#7 divr16s::@7/(word~) divr16s::dividendu#8 ) - [91] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 divr16s::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [92] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 + [93] (word) divr16s::remu#3 ← phi( divr16s::@1/((word))-(const signed word) divr16s::rem#0 divr16s::@7/((word))(const signed word) divr16s::rem#0 ) + [93] (word) divr16s::dividendu#3 ← phi( divr16s::@1/(word~) divr16s::dividendu#7 divr16s::@7/(word~) divr16s::dividendu#8 ) + [93] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 divr16s::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [94] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 to:divr16s::@8 divr16s::@8: scope:[divr16s] from divr16s::@2 - [93] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + [95] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 to:divr16s::@4 divr16s::@4: scope:[divr16s] from divr16s::@3 divr16s::@8 - [94] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@8/(byte) divr16s::neg#3 ) - [94] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@8/(word~) divr16s::divisoru#5 ) - [95] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 - [96] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 - [97] (word) divr16u::rem#4 ← (word) divr16s::remu#3 - [98] call divr16u - [99] (word) divr16u::return#3 ← (word) divr16u::return#0 + [96] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@8/(byte) divr16s::neg#3 ) + [96] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@8/(word~) divr16s::divisoru#5 ) + [97] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 + [98] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 + [99] (word) divr16u::rem#4 ← (word) divr16s::remu#3 + [100] call divr16u + [101] (word) divr16u::return#3 ← (word) divr16u::return#0 to:divr16s::@6 divr16s::@6: scope:[divr16s] from divr16s::@4 - [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 - [101] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@9 + [102] (word) divr16s::resultu#0 ← (word) divr16u::return#3 + [103] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@9 to:divr16s::@5 divr16s::@5: scope:[divr16s] from divr16s::@6 - [102] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 - [103] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 + [104] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 + [105] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 to:divr16s::@return divr16s::@return: scope:[divr16s] from divr16s::@5 divr16s::@9 - [104] (signed word) rem16s#11 ← phi( divr16s::@5/(signed word) rem16s#2 divr16s::@9/(signed word~) rem16s#37 ) - [104] (signed word) divr16s::return#2 ← phi( divr16s::@5/(signed word) divr16s::return#1 divr16s::@9/(signed word~) divr16s::return#7 ) - [105] return + [106] (signed word) rem16s#11 ← phi( divr16s::@5/(signed word) rem16s#2 divr16s::@9/(signed word~) rem16s#37 ) + [106] (signed word) divr16s::return#2 ← phi( divr16s::@5/(signed word) divr16s::return#1 divr16s::@9/(signed word~) divr16s::return#7 ) + [107] return to:@return divr16s::@9: scope:[divr16s] from divr16s::@6 - [106] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 - [107] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 + [108] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 + [109] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 to:divr16s::@return divr16s::@3: scope:[divr16s] from divr16s::@2 - [108] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 - [109] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 - [110] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 + [110] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 + [111] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 + [112] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 to:divr16s::@4 divr16s::@1: scope:[divr16s] from divr16s - [111] (signed word~) divr16s::$8 ← - (signed word) divr16s::dividend#0 - [112] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$8 + [113] (signed word~) divr16s::$8 ← - (signed word) divr16s::dividend#0 + [114] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$8 to:divr16s::@2 divr16u: scope:[divr16u] from div16u divr16s::@4 - [113] (word) divr16u::divisor#6 ← phi( div16u/(word) divr16u::divisor#0 divr16s::@4/(word) divr16u::divisor#1 ) - [113] (word) divr16u::dividend#5 ← phi( div16u/(word) divr16u::dividend#1 divr16s::@4/(word) divr16u::dividend#2 ) - [113] (word) divr16u::rem#10 ← phi( div16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16s::@4/(word) divr16u::rem#4 ) + [115] (word) divr16u::divisor#6 ← phi( div16u/(word) divr16u::divisor#0 divr16s::@4/(word) divr16u::divisor#1 ) + [115] (word) divr16u::dividend#5 ← phi( div16u/(word) divr16u::dividend#1 divr16s::@4/(word) divr16u::dividend#2 ) + [115] (word) divr16u::rem#10 ← phi( div16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16s::@4/(word) divr16u::rem#4 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [114] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) - [114] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) - [114] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [114] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) - [115] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [116] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [117] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 - [118] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 + [116] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) + [116] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) + [116] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [116] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) + [117] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [118] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [119] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 + [120] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [119] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 + [121] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [120] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [121] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [122] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 + [122] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [123] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [124] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [125] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [124] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 + [126] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [127] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [126] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [126] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [127] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [128] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 + [128] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [128] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [129] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [130] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [129] (word) rem16u#1 ← (word) divr16u::rem#11 + [131] (word) rem16u#1 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [130] return + [132] return to:@return test_8s: scope:[test_8s] from main::@3 - [131] phi() + [133] phi() to:test_8s::@1 test_8s::@1: scope:[test_8s] from test_8s test_8s::@10 - [132] (byte) test_8s::i#10 ← phi( test_8s/(byte/signed byte/word/signed word/dword/signed dword) 0 test_8s::@10/(byte) test_8s::i#1 ) - [133] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) - [134] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) - [135] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 - [136] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 - [137] call div8s - [138] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 + [134] (byte) test_8s::i#10 ← phi( test_8s/(byte/signed byte/word/signed word/dword/signed dword) 0 test_8s::@10/(byte) test_8s::i#1 ) + [135] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) + [136] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) + [137] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 + [138] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 + [139] call div8s + [140] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 to:test_8s::@2 test_8s::@2: scope:[test_8s] from test_8s::@1 - [139] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 - [140] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 - [141] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 - [142] call print_sbyte + [141] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 + [142] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 + [143] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 + [144] call print_sbyte to:test_8s::@3 test_8s::@3: scope:[test_8s] from test_8s::@2 - [143] phi() - [144] call print_str + [145] phi() + [146] call print_str to:test_8s::@4 test_8s::@4: scope:[test_8s] from test_8s::@3 - [145] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 - [146] call print_sbyte + [147] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 + [148] call print_sbyte to:test_8s::@5 test_8s::@5: scope:[test_8s] from test_8s::@4 - [147] phi() - [148] call print_str + [149] phi() + [150] call print_str to:test_8s::@6 test_8s::@6: scope:[test_8s] from test_8s::@5 - [149] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 - [150] call print_sbyte + [151] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 + [152] call print_sbyte to:test_8s::@7 test_8s::@7: scope:[test_8s] from test_8s::@6 - [151] phi() - [152] call print_str + [153] phi() + [154] call print_str to:test_8s::@8 test_8s::@8: scope:[test_8s] from test_8s::@7 - [153] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 - [154] call print_sbyte + [155] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 + [156] call print_sbyte to:test_8s::@9 test_8s::@9: scope:[test_8s] from test_8s::@8 - [155] phi() - [156] call print_ln + [157] phi() + [158] call print_ln to:test_8s::@10 test_8s::@10: scope:[test_8s] from test_8s::@9 - [157] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 - [158] if((byte) test_8s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8s::@1 + [159] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 + [160] if((byte) test_8s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8s::@1 to:test_8s::@return test_8s::@return: scope:[test_8s] from test_8s::@10 - [159] return + [161] return to:@return print_sbyte: scope:[print_sbyte] from test_8s::@2 test_8s::@4 test_8s::@6 test_8s::@8 - [160] (byte*) print_char_cursor#132 ← phi( test_8s::@2/(byte*~) print_char_cursor#184 test_8s::@4/(byte*) print_char_cursor#128 test_8s::@6/(byte*) print_char_cursor#128 test_8s::@8/(byte*) print_char_cursor#128 ) - [160] (signed byte) print_sbyte::b#10 ← phi( test_8s::@2/(signed byte) print_sbyte::b#1 test_8s::@4/(signed byte) print_sbyte::b#2 test_8s::@6/(signed byte) print_sbyte::b#3 test_8s::@8/(signed byte) print_sbyte::b#4 ) - [161] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 + [162] (byte*) print_char_cursor#132 ← phi( test_8s::@2/(byte*~) print_char_cursor#184 test_8s::@4/(byte*) print_char_cursor#128 test_8s::@6/(byte*) print_char_cursor#128 test_8s::@8/(byte*) print_char_cursor#128 ) + [162] (signed byte) print_sbyte::b#10 ← phi( test_8s::@2/(signed byte) print_sbyte::b#1 test_8s::@4/(signed byte) print_sbyte::b#2 test_8s::@6/(signed byte) print_sbyte::b#3 test_8s::@8/(signed byte) print_sbyte::b#4 ) + [163] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 to:print_sbyte::@3 print_sbyte::@3: scope:[print_sbyte] from print_sbyte - [162] phi() - [163] call print_char + [164] phi() + [165] call print_char to:print_sbyte::@2 print_sbyte::@2: scope:[print_sbyte] from print_sbyte::@3 print_sbyte::@4 - [164] (signed byte) print_sbyte::b#7 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#10 ) - [165] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#7 - [166] call print_byte + [166] (signed byte) print_sbyte::b#7 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#10 ) + [167] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#7 + [168] call print_byte to:print_sbyte::@return print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@2 - [167] return + [169] return to:@return print_sbyte::@1: scope:[print_sbyte] from print_sbyte - [168] phi() - [169] call print_char + [170] phi() + [171] call print_char to:print_sbyte::@4 print_sbyte::@4: scope:[print_sbyte] from print_sbyte::@1 - [170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 + [172] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 to:print_sbyte::@2 div8s: scope:[div8s] from test_8s::@1 - [171] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1 + [173] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1 to:div8s::@7 div8s::@7: scope:[div8s] from div8s - [172] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 + [174] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 to:div8s::@2 div8s::@2: scope:[div8s] from div8s::@1 div8s::@7 - [173] (byte) div8s::dividendu#3 ← phi( div8s::@1/(byte~) div8s::dividendu#7 div8s::@7/(byte~) div8s::dividendu#8 ) - [173] (byte) div8s::neg#3 ← phi( div8s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 div8s::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [174] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3 + [175] (byte) div8s::dividendu#3 ← phi( div8s::@1/(byte~) div8s::dividendu#7 div8s::@7/(byte~) div8s::dividendu#8 ) + [175] (byte) div8s::neg#3 ← phi( div8s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 div8s::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [176] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3 to:div8s::@8 div8s::@8: scope:[div8s] from div8s::@2 - [175] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 + [177] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 to:div8s::@4 div8s::@4: scope:[div8s] from div8s::@3 div8s::@8 - [176] (byte) div8s::neg#4 ← phi( div8s::@3/(byte) div8s::neg#2 div8s::@8/(byte) div8s::neg#3 ) - [176] (byte) div8s::divisoru#3 ← phi( div8s::@3/(byte~) div8s::divisoru#4 div8s::@8/(byte~) div8s::divisoru#5 ) - [177] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 - [178] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 - [179] call div8u - [180] (byte) div8u::return#2 ← (byte) div8u::return#0 + [178] (byte) div8s::neg#4 ← phi( div8s::@3/(byte) div8s::neg#2 div8s::@8/(byte) div8s::neg#3 ) + [178] (byte) div8s::divisoru#3 ← phi( div8s::@3/(byte~) div8s::divisoru#4 div8s::@8/(byte~) div8s::divisoru#5 ) + [179] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 + [180] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 + [181] call div8u + [182] (byte) div8u::return#2 ← (byte) div8u::return#0 to:div8s::@6 div8s::@6: scope:[div8s] from div8s::@4 - [181] (byte) div8s::resultu#0 ← (byte) div8u::return#2 - [182] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@9 + [183] (byte) div8s::resultu#0 ← (byte) div8u::return#2 + [184] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@9 to:div8s::@5 div8s::@5: scope:[div8s] from div8s::@6 - [183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 - [184] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 + [185] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 + [186] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 to:div8s::@return div8s::@return: scope:[div8s] from div8s::@5 div8s::@9 - [185] (signed byte) rem8s#3 ← phi( div8s::@5/(signed byte) rem8s#2 div8s::@9/(signed byte~) rem8s#33 ) - [185] (signed byte) div8s::return#2 ← phi( div8s::@5/(signed byte) div8s::return#1 div8s::@9/(signed byte~) div8s::return#7 ) - [186] return + [187] (signed byte) rem8s#3 ← phi( div8s::@5/(signed byte) rem8s#2 div8s::@9/(signed byte~) rem8s#33 ) + [187] (signed byte) div8s::return#2 ← phi( div8s::@5/(signed byte) div8s::return#1 div8s::@9/(signed byte~) div8s::return#7 ) + [188] return to:@return div8s::@9: scope:[div8s] from div8s::@6 - [187] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 - [188] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 + [189] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 + [190] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 to:div8s::@return div8s::@3: scope:[div8s] from div8s::@2 - [189] (signed byte~) div8s::$8 ← - (signed byte) div8s::divisor#0 - [190] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 - [191] (byte~) div8s::divisoru#4 ← (byte)(signed byte~) div8s::$8 + [191] (signed byte~) div8s::$8 ← - (signed byte) div8s::divisor#0 + [192] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 + [193] (byte~) div8s::divisoru#4 ← (byte)(signed byte~) div8s::$8 to:div8s::@4 div8s::@1: scope:[div8s] from div8s - [192] (signed byte~) div8s::$5 ← - (signed byte) div8s::dividend#0 - [193] (byte~) div8s::dividendu#7 ← (byte)(signed byte~) div8s::$5 + [194] (signed byte~) div8s::$5 ← - (signed byte) div8s::dividend#0 + [195] (byte~) div8s::dividendu#7 ← (byte)(signed byte~) div8s::$5 to:div8s::@2 div8u: scope:[div8u] from div8s::@4 test_8u::@1 - [194] (byte) div8u::divisor#2 ← phi( div8s::@4/(byte) div8u::divisor#0 test_8u::@1/(byte) div8u::divisor#1 ) - [194] (byte) div8u::dividend#2 ← phi( div8s::@4/(byte) div8u::dividend#0 test_8u::@1/(byte) div8u::dividend#1 ) - [195] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 - [196] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 - [197] call divr8u - [198] (byte) divr8u::return#0 ← (byte) divr8u::return#1 + [196] (byte) div8u::divisor#2 ← phi( div8s::@4/(byte) div8u::divisor#0 test_8u::@1/(byte) div8u::divisor#1 ) + [196] (byte) div8u::dividend#2 ← phi( div8s::@4/(byte) div8u::dividend#0 test_8u::@1/(byte) div8u::dividend#1 ) + [197] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 + [198] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 + [199] call divr8u + [200] (byte) divr8u::return#0 ← (byte) divr8u::return#1 to:div8u::@1 div8u::@1: scope:[div8u] from div8u - [199] (byte) div8u::return#0 ← (byte) divr8u::return#0 + [201] (byte) div8u::return#0 ← (byte) divr8u::return#0 to:div8u::@return div8u::@return: scope:[div8u] from div8u::@1 - [200] return + [202] return to:@return divr8u: scope:[divr8u] from div8u - [201] phi() + [203] phi() to:divr8u::@1 divr8u::@1: scope:[divr8u] from divr8u divr8u::@3 - [202] (byte) divr8u::i#2 ← phi( divr8u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr8u::@3/(byte) divr8u::i#1 ) - [202] (byte) divr8u::quotient#3 ← phi( divr8u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr8u::@3/(byte) divr8u::return#1 ) - [202] (byte) divr8u::dividend#2 ← phi( divr8u/(byte) divr8u::dividend#0 divr8u::@3/(byte) divr8u::dividend#1 ) - [202] (byte) divr8u::rem#4 ← phi( divr8u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr8u::@3/(byte) divr8u::rem#10 ) - [203] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [204] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) $80 - [205] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2 + [204] (byte) divr8u::i#2 ← phi( divr8u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr8u::@3/(byte) divr8u::i#1 ) + [204] (byte) divr8u::quotient#3 ← phi( divr8u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr8u::@3/(byte) divr8u::return#1 ) + [204] (byte) divr8u::dividend#2 ← phi( divr8u/(byte) divr8u::dividend#0 divr8u::@3/(byte) divr8u::dividend#1 ) + [204] (byte) divr8u::rem#4 ← phi( divr8u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr8u::@3/(byte) divr8u::rem#10 ) + [205] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [206] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) $80 + [207] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2 to:divr8u::@4 divr8u::@4: scope:[divr8u] from divr8u::@1 - [206] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 + [208] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 to:divr8u::@2 divr8u::@2: scope:[divr8u] from divr8u::@1 divr8u::@4 - [207] (byte) divr8u::rem#5 ← phi( divr8u::@1/(byte) divr8u::rem#1 divr8u::@4/(byte) divr8u::rem#2 ) - [208] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [209] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [210] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 + [209] (byte) divr8u::rem#5 ← phi( divr8u::@1/(byte) divr8u::rem#1 divr8u::@4/(byte) divr8u::rem#2 ) + [210] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [211] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [212] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 to:divr8u::@5 divr8u::@5: scope:[divr8u] from divr8u::@2 - [211] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 - [212] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 + [213] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 + [214] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 to:divr8u::@3 divr8u::@3: scope:[divr8u] from divr8u::@2 divr8u::@5 - [213] (byte) divr8u::return#1 ← phi( divr8u::@2/(byte) divr8u::quotient#1 divr8u::@5/(byte) divr8u::quotient#2 ) - [213] (byte) divr8u::rem#10 ← phi( divr8u::@2/(byte) divr8u::rem#5 divr8u::@5/(byte) divr8u::rem#3 ) - [214] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 - [215] if((byte) divr8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto divr8u::@1 + [215] (byte) divr8u::return#1 ← phi( divr8u::@2/(byte) divr8u::quotient#1 divr8u::@5/(byte) divr8u::quotient#2 ) + [215] (byte) divr8u::rem#10 ← phi( divr8u::@2/(byte) divr8u::rem#5 divr8u::@5/(byte) divr8u::rem#3 ) + [216] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 + [217] if((byte) divr8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto divr8u::@1 to:divr8u::@6 divr8u::@6: scope:[divr8u] from divr8u::@3 - [216] (byte) rem8u#17 ← (byte) divr8u::rem#10 + [218] (byte) rem8u#17 ← (byte) divr8u::rem#10 to:divr8u::@return divr8u::@return: scope:[divr8u] from divr8u::@6 - [217] return + [219] return to:@return test_16u: scope:[test_16u] from main::@2 - [218] phi() + [220] phi() to:test_16u::@1 test_16u::@1: scope:[test_16u] from test_16u test_16u::@10 - [219] (byte) test_16u::i#10 ← phi( test_16u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_16u::@10/(byte) test_16u::i#1 ) - [220] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) - [221] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) - [222] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 - [223] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 - [224] call div16u - [225] (word) div16u::return#2 ← (word) div16u::return#0 + [221] (byte) test_16u::i#10 ← phi( test_16u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_16u::@10/(byte) test_16u::i#1 ) + [222] (byte) test_16u::$10 ← (byte) test_16u::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [223] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::$10) + [224] (byte) test_16u::$11 ← (byte) test_16u::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [225] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::$11) + [226] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 + [227] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 + [228] call div16u + [229] (word) div16u::return#2 ← (word) div16u::return#0 to:test_16u::@2 test_16u::@2: scope:[test_16u] from test_16u::@1 - [226] (word) test_16u::res#0 ← (word) div16u::return#2 - [227] (word) print_word::w#1 ← (word) test_16u::dividend#0 - [228] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1 - [229] call print_word + [230] (word) test_16u::res#0 ← (word) div16u::return#2 + [231] (word) print_word::w#1 ← (word) test_16u::dividend#0 + [232] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1 + [233] call print_word to:test_16u::@3 test_16u::@3: scope:[test_16u] from test_16u::@2 - [230] phi() - [231] call print_str - to:test_16u::@4 -test_16u::@4: scope:[test_16u] from test_16u::@3 - [232] (word) print_word::w#2 ← (word) test_16u::divisor#0 - [233] call print_word - to:test_16u::@5 -test_16u::@5: scope:[test_16u] from test_16u::@4 [234] phi() [235] call print_str - to:test_16u::@6 -test_16u::@6: scope:[test_16u] from test_16u::@5 - [236] (word) print_word::w#3 ← (word) test_16u::res#0 + to:test_16u::@4 +test_16u::@4: scope:[test_16u] from test_16u::@3 + [236] (word) print_word::w#2 ← (word) test_16u::divisor#0 [237] call print_word - to:test_16u::@7 -test_16u::@7: scope:[test_16u] from test_16u::@6 + to:test_16u::@5 +test_16u::@5: scope:[test_16u] from test_16u::@4 [238] phi() [239] call print_str + to:test_16u::@6 +test_16u::@6: scope:[test_16u] from test_16u::@5 + [240] (word) print_word::w#3 ← (word) test_16u::res#0 + [241] call print_word + to:test_16u::@7 +test_16u::@7: scope:[test_16u] from test_16u::@6 + [242] phi() + [243] call print_str to:test_16u::@8 test_16u::@8: scope:[test_16u] from test_16u::@7 - [240] (word) print_word::w#4 ← (word) rem16u#1 - [241] call print_word + [244] (word) print_word::w#4 ← (word) rem16u#1 + [245] call print_word to:test_16u::@9 test_16u::@9: scope:[test_16u] from test_16u::@8 - [242] phi() - [243] call print_ln + [246] phi() + [247] call print_ln to:test_16u::@10 test_16u::@10: scope:[test_16u] from test_16u::@9 - [244] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 - [245] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $c) goto test_16u::@1 + [248] (byte) test_16u::i#1 ← ++ (byte) test_16u::i#10 + [249] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_16u::@1 to:test_16u::@return test_16u::@return: scope:[test_16u] from test_16u::@10 - [246] return + [250] return to:@return div16u: scope:[div16u] from test_16u::@1 - [247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 - [248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 - [249] call divr16u - [250] (word) divr16u::return#2 ← (word) divr16u::return#0 + [251] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 + [252] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 + [253] call divr16u + [254] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div16u::@1 div16u::@1: scope:[div16u] from div16u - [251] (word) div16u::return#0 ← (word) divr16u::return#2 + [255] (word) div16u::return#0 ← (word) divr16u::return#2 to:div16u::@return div16u::@return: scope:[div16u] from div16u::@1 - [252] return + [256] return to:@return test_8u: scope:[test_8u] from main::@1 - [253] phi() + [257] phi() to:test_8u::@1 test_8u::@1: scope:[test_8u] from test_8u test_8u::@11 - [254] (byte*) print_line_cursor#41 ← phi( test_8u/((byte*))(word/signed word/dword/signed dword) $400 test_8u::@11/(byte*) print_line_cursor#1 ) - [254] (byte*) print_char_cursor#138 ← phi( test_8u/((byte*))(word/signed word/dword/signed dword) $400 test_8u::@11/(byte*~) print_char_cursor#188 ) - [254] (byte) test_8u::i#10 ← phi( test_8u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_8u::@11/(byte) test_8u::i#1 ) - [255] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) - [256] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) - [257] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 - [258] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 - [259] call div8u - [260] (byte) div8u::return#3 ← (byte) div8u::return#0 + [258] (byte*) print_line_cursor#41 ← phi( test_8u/((byte*))(word/signed word/dword/signed dword) $400 test_8u::@11/(byte*) print_line_cursor#1 ) + [258] (byte*) print_char_cursor#138 ← phi( test_8u/((byte*))(word/signed word/dword/signed dword) $400 test_8u::@11/(byte*~) print_char_cursor#188 ) + [258] (byte) test_8u::i#10 ← phi( test_8u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_8u::@11/(byte) test_8u::i#1 ) + [259] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) + [260] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) + [261] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 + [262] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 + [263] call div8u + [264] (byte) div8u::return#3 ← (byte) div8u::return#0 to:test_8u::@2 test_8u::@2: scope:[test_8u] from test_8u::@1 - [261] (byte) test_8u::res#0 ← (byte) div8u::return#3 - [262] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 - [263] call print_byte + [265] (byte) test_8u::res#0 ← (byte) div8u::return#3 + [266] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 + [267] call print_byte to:test_8u::@3 test_8u::@3: scope:[test_8u] from test_8u::@2 - [264] phi() - [265] call print_str - to:test_8u::@4 -test_8u::@4: scope:[test_8u] from test_8u::@3 - [266] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 - [267] call print_byte - to:test_8u::@5 -test_8u::@5: scope:[test_8u] from test_8u::@4 [268] phi() [269] call print_str - to:test_8u::@6 -test_8u::@6: scope:[test_8u] from test_8u::@5 - [270] (byte) print_byte::b#5 ← (byte) test_8u::res#0 + to:test_8u::@4 +test_8u::@4: scope:[test_8u] from test_8u::@3 + [270] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 [271] call print_byte - to:test_8u::@7 -test_8u::@7: scope:[test_8u] from test_8u::@6 + to:test_8u::@5 +test_8u::@5: scope:[test_8u] from test_8u::@4 [272] phi() [273] call print_str + to:test_8u::@6 +test_8u::@6: scope:[test_8u] from test_8u::@5 + [274] (byte) print_byte::b#5 ← (byte) test_8u::res#0 + [275] call print_byte + to:test_8u::@7 +test_8u::@7: scope:[test_8u] from test_8u::@6 + [276] phi() + [277] call print_str to:test_8u::@8 test_8u::@8: scope:[test_8u] from test_8u::@7 - [274] (byte) print_byte::b#6 ← (byte) rem8u#17 - [275] call print_byte + [278] (byte) print_byte::b#6 ← (byte) rem8u#17 + [279] call print_byte to:test_8u::@9 test_8u::@9: scope:[test_8u] from test_8u::@8 - [276] phi() - [277] call print_ln + [280] phi() + [281] call print_ln to:test_8u::@10 test_8u::@10: scope:[test_8u] from test_8u::@9 - [278] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 - [279] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@11 + [282] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 + [283] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@11 to:test_8u::@return test_8u::@return: scope:[test_8u] from test_8u::@10 - [280] return + [284] return to:@return test_8u::@11: scope:[test_8u] from test_8u::@10 - [281] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 + [285] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 to:test_8u::@1 print_cls: scope:[print_cls] from main - [282] phi() + [286] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [283] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) $400 print_cls::@1/(byte*) print_cls::sc#1 ) - [284] *((byte*) print_cls::sc#2) ← (byte) ' ' - [285] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [286] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 + [287] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) $400 print_cls::@1/(byte*) print_cls::sc#1 ) + [288] *((byte*) print_cls::sc#2) ← (byte) ' ' + [289] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [290] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [287] return + [291] return to:@return @@ -4191,7 +4213,7 @@ VARIABLE REGISTER WEIGHTS (byte*) print_cls::sc#2 16.5 (byte[]) print_hextab (byte*) print_line_cursor -(byte*) print_line_cursor#1 3.9099999999999993 +(byte*) print_line_cursor#1 3.759615384615385 (byte*) print_line_cursor#20 204.0 (byte*) print_line_cursor#39 46.0 (byte*) print_line_cursor#41 0.9565217391304348 @@ -4241,27 +4263,31 @@ VARIABLE REGISTER WEIGHTS (byte) rem8u (byte) rem8u#17 0.5 (void()) test_16s() +(byte) test_16s::$16 22.0 +(byte) test_16s::$17 22.0 (signed word) test_16s::dividend -(signed word) test_16s::dividend#0 4.714285714285714 +(signed word) test_16s::dividend#0 4.125 (signed word[]) test_16s::dividends (signed word) test_16s::divisor (signed word) test_16s::divisor#0 3.0 (signed word[]) test_16s::divisors (byte) test_16s::i (byte) test_16s::i#1 16.5 -(byte) test_16s::i#10 1.76 +(byte) test_16s::i#10 1.6296296296296295 (signed word) test_16s::res (signed word) test_16s::res#0 2.2 (void()) test_16u() +(byte) test_16u::$10 22.0 +(byte) test_16u::$11 22.0 (word) test_16u::dividend -(word) test_16u::dividend#0 4.714285714285714 +(word) test_16u::dividend#0 4.125 (word[]) test_16u::dividends (word) test_16u::divisor (word) test_16u::divisor#0 3.0 (word[]) test_16u::divisors (byte) test_16u::i (byte) test_16u::i#1 16.5 -(byte) test_16u::i#10 1.76 +(byte) test_16u::i#10 1.6296296296296295 (word) test_16u::res (word) test_16u::res#0 2.2 (void()) test_8s() @@ -4325,7 +4351,9 @@ Initial phi equivalence classes [ test_16u::i#10 test_16u::i#1 ] [ test_8u::i#10 test_8u::i#1 ] [ print_cls::sc#2 print_cls::sc#1 ] +Added variable test_16s::$16 to zero page equivalence class [ test_16s::$16 ] Added variable test_16s::dividend#0 to zero page equivalence class [ test_16s::dividend#0 ] +Added variable test_16s::$17 to zero page equivalence class [ test_16s::$17 ] Added variable test_16s::divisor#0 to zero page equivalence class [ test_16s::divisor#0 ] Added variable div16s::dividend#0 to zero page equivalence class [ div16s::dividend#0 ] Added variable div16s::divisor#0 to zero page equivalence class [ div16s::divisor#0 ] @@ -4359,7 +4387,9 @@ Added variable divr8u::return#0 to zero page equivalence class [ divr8u::return# Added variable div8u::return#0 to zero page equivalence class [ div8u::return#0 ] Added variable divr8u::$1 to zero page equivalence class [ divr8u::$1 ] Added variable rem8u#17 to zero page equivalence class [ rem8u#17 ] +Added variable test_16u::$10 to zero page equivalence class [ test_16u::$10 ] Added variable test_16u::dividend#0 to zero page equivalence class [ test_16u::dividend#0 ] +Added variable test_16u::$11 to zero page equivalence class [ test_16u::$11 ] Added variable test_16u::divisor#0 to zero page equivalence class [ test_16u::divisor#0 ] Added variable div16u::dividend#0 to zero page equivalence class [ div16u::dividend#0 ] Added variable div16u::divisor#0 to zero page equivalence class [ div16u::divisor#0 ] @@ -4407,7 +4437,9 @@ Complete equivalence classes [ test_16u::i#10 test_16u::i#1 ] [ test_8u::i#10 test_8u::i#1 ] [ print_cls::sc#2 print_cls::sc#1 ] +[ test_16s::$16 ] [ test_16s::dividend#0 ] +[ test_16s::$17 ] [ test_16s::divisor#0 ] [ div16s::dividend#0 ] [ div16s::divisor#0 ] @@ -4441,7 +4473,9 @@ Complete equivalence classes [ div8u::return#0 ] [ divr8u::$1 ] [ rem8u#17 ] +[ test_16u::$10 ] [ test_16u::dividend#0 ] +[ test_16u::$11 ] [ test_16u::divisor#0 ] [ div16u::dividend#0 ] [ div16u::divisor#0 ] @@ -4488,52 +4522,56 @@ Allocated zp ZP_BYTE:47 [ divr8u::i#2 divr8u::i#1 ] Allocated zp ZP_BYTE:48 [ test_16u::i#10 test_16u::i#1 ] Allocated zp ZP_BYTE:49 [ test_8u::i#10 test_8u::i#1 ] Allocated zp ZP_WORD:50 [ print_cls::sc#2 print_cls::sc#1 ] -Allocated zp ZP_WORD:52 [ test_16s::dividend#0 ] -Allocated zp ZP_WORD:54 [ test_16s::divisor#0 ] -Allocated zp ZP_WORD:56 [ div16s::dividend#0 ] -Allocated zp ZP_WORD:58 [ div16s::divisor#0 ] -Allocated zp ZP_WORD:60 [ div16s::return#2 ] -Allocated zp ZP_WORD:62 [ test_16s::res#0 ] -Allocated zp ZP_BYTE:64 [ print_byte::$0 ] -Allocated zp ZP_BYTE:65 [ print_byte::$2 ] -Allocated zp ZP_WORD:66 [ divr16s::dividend#0 ] -Allocated zp ZP_WORD:68 [ divr16s::divisor#0 ] -Allocated zp ZP_WORD:70 [ divr16s::return#3 ] -Allocated zp ZP_WORD:72 [ div16s::return#0 ] -Allocated zp ZP_WORD:74 [ divr16u::return#3 ] -Allocated zp ZP_WORD:76 [ divr16s::resultu#0 ] -Allocated zp ZP_WORD:78 [ divr16s::$13 ] -Allocated zp ZP_WORD:80 [ divr16s::$8 ] -Allocated zp ZP_BYTE:82 [ divr16u::$1 ] -Allocated zp ZP_BYTE:83 [ divr16u::$2 ] -Allocated zp ZP_WORD:84 [ rem16u#1 ] -Allocated zp ZP_BYTE:86 [ test_8s::dividend#0 ] -Allocated zp ZP_BYTE:87 [ test_8s::divisor#0 ] -Allocated zp ZP_BYTE:88 [ div8s::dividend#0 ] -Allocated zp ZP_BYTE:89 [ div8s::divisor#0 ] -Allocated zp ZP_BYTE:90 [ div8s::return#3 ] -Allocated zp ZP_BYTE:91 [ test_8s::res#0 ] -Allocated zp ZP_BYTE:92 [ div8u::return#2 ] -Allocated zp ZP_BYTE:93 [ div8s::resultu#0 ] -Allocated zp ZP_BYTE:94 [ div8s::$8 ] -Allocated zp ZP_BYTE:95 [ div8s::$5 ] -Allocated zp ZP_BYTE:96 [ divr8u::divisor#0 ] -Allocated zp ZP_BYTE:97 [ divr8u::return#0 ] -Allocated zp ZP_BYTE:98 [ div8u::return#0 ] -Allocated zp ZP_BYTE:99 [ divr8u::$1 ] -Allocated zp ZP_BYTE:100 [ rem8u#17 ] -Allocated zp ZP_WORD:101 [ test_16u::dividend#0 ] -Allocated zp ZP_WORD:103 [ test_16u::divisor#0 ] -Allocated zp ZP_WORD:105 [ div16u::dividend#0 ] -Allocated zp ZP_WORD:107 [ div16u::divisor#0 ] -Allocated zp ZP_WORD:109 [ div16u::return#2 ] -Allocated zp ZP_WORD:111 [ test_16u::res#0 ] -Allocated zp ZP_WORD:113 [ divr16u::return#2 ] -Allocated zp ZP_WORD:115 [ div16u::return#0 ] -Allocated zp ZP_BYTE:117 [ test_8u::dividend#0 ] -Allocated zp ZP_BYTE:118 [ test_8u::divisor#0 ] -Allocated zp ZP_BYTE:119 [ div8u::return#3 ] -Allocated zp ZP_BYTE:120 [ test_8u::res#0 ] +Allocated zp ZP_BYTE:52 [ test_16s::$16 ] +Allocated zp ZP_WORD:53 [ test_16s::dividend#0 ] +Allocated zp ZP_BYTE:55 [ test_16s::$17 ] +Allocated zp ZP_WORD:56 [ test_16s::divisor#0 ] +Allocated zp ZP_WORD:58 [ div16s::dividend#0 ] +Allocated zp ZP_WORD:60 [ div16s::divisor#0 ] +Allocated zp ZP_WORD:62 [ div16s::return#2 ] +Allocated zp ZP_WORD:64 [ test_16s::res#0 ] +Allocated zp ZP_BYTE:66 [ print_byte::$0 ] +Allocated zp ZP_BYTE:67 [ print_byte::$2 ] +Allocated zp ZP_WORD:68 [ divr16s::dividend#0 ] +Allocated zp ZP_WORD:70 [ divr16s::divisor#0 ] +Allocated zp ZP_WORD:72 [ divr16s::return#3 ] +Allocated zp ZP_WORD:74 [ div16s::return#0 ] +Allocated zp ZP_WORD:76 [ divr16u::return#3 ] +Allocated zp ZP_WORD:78 [ divr16s::resultu#0 ] +Allocated zp ZP_WORD:80 [ divr16s::$13 ] +Allocated zp ZP_WORD:82 [ divr16s::$8 ] +Allocated zp ZP_BYTE:84 [ divr16u::$1 ] +Allocated zp ZP_BYTE:85 [ divr16u::$2 ] +Allocated zp ZP_WORD:86 [ rem16u#1 ] +Allocated zp ZP_BYTE:88 [ test_8s::dividend#0 ] +Allocated zp ZP_BYTE:89 [ test_8s::divisor#0 ] +Allocated zp ZP_BYTE:90 [ div8s::dividend#0 ] +Allocated zp ZP_BYTE:91 [ div8s::divisor#0 ] +Allocated zp ZP_BYTE:92 [ div8s::return#3 ] +Allocated zp ZP_BYTE:93 [ test_8s::res#0 ] +Allocated zp ZP_BYTE:94 [ div8u::return#2 ] +Allocated zp ZP_BYTE:95 [ div8s::resultu#0 ] +Allocated zp ZP_BYTE:96 [ div8s::$8 ] +Allocated zp ZP_BYTE:97 [ div8s::$5 ] +Allocated zp ZP_BYTE:98 [ divr8u::divisor#0 ] +Allocated zp ZP_BYTE:99 [ divr8u::return#0 ] +Allocated zp ZP_BYTE:100 [ div8u::return#0 ] +Allocated zp ZP_BYTE:101 [ divr8u::$1 ] +Allocated zp ZP_BYTE:102 [ rem8u#17 ] +Allocated zp ZP_BYTE:103 [ test_16u::$10 ] +Allocated zp ZP_WORD:104 [ test_16u::dividend#0 ] +Allocated zp ZP_BYTE:106 [ test_16u::$11 ] +Allocated zp ZP_WORD:107 [ test_16u::divisor#0 ] +Allocated zp ZP_WORD:109 [ div16u::dividend#0 ] +Allocated zp ZP_WORD:111 [ div16u::divisor#0 ] +Allocated zp ZP_WORD:113 [ div16u::return#2 ] +Allocated zp ZP_WORD:115 [ test_16u::res#0 ] +Allocated zp ZP_WORD:117 [ divr16u::return#2 ] +Allocated zp ZP_WORD:119 [ div16u::return#0 ] +Allocated zp ZP_BYTE:121 [ test_8u::dividend#0 ] +Allocated zp ZP_BYTE:122 [ test_8u::divisor#0 ] +Allocated zp ZP_BYTE:123 [ div8u::return#3 ] +Allocated zp ZP_BYTE:124 [ test_8u::res#0 ] INITIAL ASM //SEG0 File Comments @@ -4545,10 +4583,10 @@ INITIAL ASM //SEG2 Global Constants & labels .label print_char_cursor = $b .label print_line_cursor = 3 - .label rem16u = $54 + .label rem16u = $56 .label rem8s = $29 .label rem16s = $18 - .label rem8u = $64 + .label rem8u = $66 //SEG3 @begin bbegin: //SEG4 [1] phi from @begin to @1 [phi:@begin->@1] @@ -4568,7 +4606,7 @@ bend: //SEG10 main main: { //SEG11 [5] call print_cls - //SEG12 [282] phi from main to print_cls [phi:main->print_cls] + //SEG12 [286] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] @@ -4577,7 +4615,7 @@ main: { //SEG14 main::@1 b1: //SEG15 [7] call test_8u - //SEG16 [253] phi from main::@1 to test_8u [phi:main::@1->test_8u] + //SEG16 [257] phi from main::@1 to test_8u [phi:main::@1->test_8u] test_8u_from_b1: jsr test_8u //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -4586,7 +4624,7 @@ main: { //SEG18 main::@2 b2: //SEG19 [9] call test_16u - //SEG20 [218] phi from main::@2 to test_16u [phi:main::@2->test_16u] + //SEG20 [220] phi from main::@2 to test_16u [phi:main::@2->test_16u] test_16u_from_b2: jsr test_16u //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] @@ -4595,7 +4633,7 @@ main: { //SEG22 main::@3 b3: //SEG23 [11] call test_8s - //SEG24 [131] phi from main::@3 to test_8s [phi:main::@3->test_8s] + //SEG24 [133] phi from main::@3 to test_8s [phi:main::@3->test_8s] test_8s_from_b3: jsr test_8s //SEG25 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] @@ -4615,9 +4653,11 @@ main: { } //SEG31 test_16s test_16s: { - .label dividend = $34 - .label divisor = $36 - .label res = $3e + .label _16 = $34 + .label _17 = $37 + .label dividend = $35 + .label divisor = $38 + .label res = $40 .label i = 2 //SEG32 [16] phi from test_16s to test_16s::@1 [phi:test_16s->test_16s::@1] b1_from_test_16s: @@ -4631,184 +4671,189 @@ test_16s: { jmp b1 //SEG36 test_16s::@1 b1: - //SEG37 [17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 - ldy i + //SEG37 [17] (byte) test_16s::$16 ← (byte) test_16s::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda i + asl + sta _16 + //SEG38 [18] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::$16) -- vwsz1=pwsc1_derefidx_vbuz2 + ldy _16 lda dividends,y sta dividend lda dividends+1,y sta dividend+1 - //SEG38 [18] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 - ldy i + //SEG39 [19] (byte) test_16s::$17 ← (byte) test_16s::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda i + asl + sta _17 + //SEG40 [20] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::$17) -- vwsz1=pwsc1_derefidx_vbuz2 + ldy _17 lda divisors,y sta divisor lda divisors+1,y sta divisor+1 - //SEG39 [19] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 -- vwsz1=vwsz2 + //SEG41 [21] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 -- vwsz1=vwsz2 lda dividend sta div16s.dividend lda dividend+1 sta div16s.dividend+1 - //SEG40 [20] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 -- vwsz1=vwsz2 + //SEG42 [22] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 -- vwsz1=vwsz2 lda divisor sta div16s.divisor lda divisor+1 sta div16s.divisor+1 - //SEG41 [21] call div16s + //SEG43 [23] call div16s jsr div16s - //SEG42 [22] (signed word) div16s::return#2 ← (signed word) div16s::return#0 -- vwsz1=vwsz2 + //SEG44 [24] (signed word) div16s::return#2 ← (signed word) div16s::return#0 -- vwsz1=vwsz2 lda div16s.return sta div16s.return_2 lda div16s.return+1 sta div16s.return_2+1 jmp b2 - //SEG43 test_16s::@2 + //SEG45 test_16s::@2 b2: - //SEG44 [23] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 -- vwsz1=vwsz2 + //SEG46 [25] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 -- vwsz1=vwsz2 lda div16s.return_2 sta res lda div16s.return_2+1 sta res+1 - //SEG45 [24] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 -- vwsz1=vwsz2 + //SEG47 [26] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 -- vwsz1=vwsz2 lda dividend sta print_sword.w lda dividend+1 sta print_sword.w+1 - //SEG46 [25] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG48 [27] (byte*~) print_char_cursor#159 ← (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 - //SEG47 [26] call print_sword - //SEG48 [49] phi from test_16s::@2 to print_sword [phi:test_16s::@2->print_sword] + //SEG49 [28] call print_sword + //SEG50 [51] phi from test_16s::@2 to print_sword [phi:test_16s::@2->print_sword] print_sword_from_b2: - //SEG49 [49] phi (byte*) print_char_cursor#131 = (byte*~) print_char_cursor#159 [phi:test_16s::@2->print_sword#0] -- register_copy - //SEG50 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#1 [phi:test_16s::@2->print_sword#1] -- register_copy + //SEG51 [51] phi (byte*) print_char_cursor#131 = (byte*~) print_char_cursor#159 [phi:test_16s::@2->print_sword#0] -- register_copy + //SEG52 [51] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#1 [phi:test_16s::@2->print_sword#1] -- register_copy jsr print_sword - //SEG51 [27] phi from test_16s::@2 to test_16s::@3 [phi:test_16s::@2->test_16s::@3] + //SEG53 [29] phi from test_16s::@2 to test_16s::@3 [phi:test_16s::@2->test_16s::@3] b3_from_b2: jmp b3 - //SEG52 test_16s::@3 + //SEG54 test_16s::@3 b3: - //SEG53 [28] call print_str - //SEG54 [76] phi from test_16s::@3 to print_str [phi:test_16s::@3->print_str] + //SEG55 [30] call print_str + //SEG56 [78] phi from test_16s::@3 to print_str [phi:test_16s::@3->print_str] print_str_from_b3: - //SEG55 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_16s::@3->print_str#0] -- pbuz1=pbuc1 + //SEG57 [78] phi (byte*) print_str::str#15 = (const string) str [phi:test_16s::@3->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b4 - //SEG56 test_16s::@4 + //SEG58 test_16s::@4 b4: - //SEG57 [29] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 -- vwsz1=vwsz2 + //SEG59 [31] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 -- vwsz1=vwsz2 lda divisor sta print_sword.w lda divisor+1 sta print_sword.w+1 - //SEG58 [30] call print_sword - //SEG59 [49] phi from test_16s::@4 to print_sword [phi:test_16s::@4->print_sword] + //SEG60 [32] call print_sword + //SEG61 [51] phi from test_16s::@4 to print_sword [phi:test_16s::@4->print_sword] print_sword_from_b4: - //SEG60 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@4->print_sword#0] -- register_copy - //SEG61 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#2 [phi:test_16s::@4->print_sword#1] -- register_copy + //SEG62 [51] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@4->print_sword#0] -- register_copy + //SEG63 [51] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#2 [phi:test_16s::@4->print_sword#1] -- register_copy jsr print_sword - //SEG62 [31] phi from test_16s::@4 to test_16s::@5 [phi:test_16s::@4->test_16s::@5] + //SEG64 [33] phi from test_16s::@4 to test_16s::@5 [phi:test_16s::@4->test_16s::@5] b5_from_b4: jmp b5 - //SEG63 test_16s::@5 + //SEG65 test_16s::@5 b5: - //SEG64 [32] call print_str - //SEG65 [76] phi from test_16s::@5 to print_str [phi:test_16s::@5->print_str] + //SEG66 [34] call print_str + //SEG67 [78] phi from test_16s::@5 to print_str [phi:test_16s::@5->print_str] print_str_from_b5: - //SEG66 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16s::@5->print_str#0] -- pbuz1=pbuc1 + //SEG68 [78] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16s::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b6 - //SEG67 test_16s::@6 + //SEG69 test_16s::@6 b6: - //SEG68 [33] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 -- vwsz1=vwsz2 + //SEG70 [35] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 -- vwsz1=vwsz2 lda res sta print_sword.w lda res+1 sta print_sword.w+1 - //SEG69 [34] call print_sword - //SEG70 [49] phi from test_16s::@6 to print_sword [phi:test_16s::@6->print_sword] + //SEG71 [36] call print_sword + //SEG72 [51] phi from test_16s::@6 to print_sword [phi:test_16s::@6->print_sword] print_sword_from_b6: - //SEG71 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@6->print_sword#0] -- register_copy - //SEG72 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:test_16s::@6->print_sword#1] -- register_copy + //SEG73 [51] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@6->print_sword#0] -- register_copy + //SEG74 [51] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:test_16s::@6->print_sword#1] -- register_copy jsr print_sword - //SEG73 [35] phi from test_16s::@6 to test_16s::@7 [phi:test_16s::@6->test_16s::@7] + //SEG75 [37] phi from test_16s::@6 to test_16s::@7 [phi:test_16s::@6->test_16s::@7] b7_from_b6: jmp b7 - //SEG74 test_16s::@7 + //SEG76 test_16s::@7 b7: - //SEG75 [36] call print_str - //SEG76 [76] phi from test_16s::@7 to print_str [phi:test_16s::@7->print_str] + //SEG77 [38] call print_str + //SEG78 [78] phi from test_16s::@7 to print_str [phi:test_16s::@7->print_str] print_str_from_b7: - //SEG77 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16s::@7->print_str#0] -- pbuz1=pbuc1 + //SEG79 [78] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16s::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b8 - //SEG78 test_16s::@8 + //SEG80 test_16s::@8 b8: - //SEG79 [37] (signed word) print_sword::w#4 ← (signed word) rem16s#11 -- vwsz1=vwsz2 + //SEG81 [39] (signed word) print_sword::w#4 ← (signed word) rem16s#11 -- vwsz1=vwsz2 lda rem16s sta print_sword.w lda rem16s+1 sta print_sword.w+1 - //SEG80 [38] call print_sword - //SEG81 [49] phi from test_16s::@8 to print_sword [phi:test_16s::@8->print_sword] + //SEG82 [40] call print_sword + //SEG83 [51] phi from test_16s::@8 to print_sword [phi:test_16s::@8->print_sword] print_sword_from_b8: - //SEG82 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@8->print_sword#0] -- register_copy - //SEG83 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:test_16s::@8->print_sword#1] -- register_copy + //SEG84 [51] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@8->print_sword#0] -- register_copy + //SEG85 [51] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:test_16s::@8->print_sword#1] -- register_copy jsr print_sword - //SEG84 [39] phi from test_16s::@8 to test_16s::@9 [phi:test_16s::@8->test_16s::@9] + //SEG86 [41] phi from test_16s::@8 to test_16s::@9 [phi:test_16s::@8->test_16s::@9] b9_from_b8: jmp b9 - //SEG85 test_16s::@9 + //SEG87 test_16s::@9 b9: - //SEG86 [40] call print_ln - //SEG87 [44] phi from test_16s::@9 to print_ln [phi:test_16s::@9->print_ln] + //SEG88 [42] call print_ln + //SEG89 [46] phi from test_16s::@9 to print_ln [phi:test_16s::@9->print_ln] print_ln_from_b9: - //SEG88 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16s::@9->print_ln#0] -- register_copy + //SEG90 [46] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16s::@9->print_ln#0] -- register_copy jsr print_ln jmp b10 - //SEG89 test_16s::@10 + //SEG91 test_16s::@10 b10: - //SEG90 [41] (byte) test_16s::i#1 ← (byte) test_16s::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 - lda i - clc - adc #2 - sta i - //SEG91 [42] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $c) goto test_16s::@1 -- vbuz1_neq_vbuc1_then_la1 - lda #$c + //SEG92 [43] (byte) test_16s::i#1 ← ++ (byte) test_16s::i#10 -- vbuz1=_inc_vbuz1 + inc i + //SEG93 [44] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_16s::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #6 cmp i bne b1_from_b10 jmp breturn - //SEG92 test_16s::@return + //SEG94 test_16s::@return breturn: - //SEG93 [43] return + //SEG95 [45] return rts dividends: .word $7fff, $7fff, -$7fff, -$7fff, $7fff, -$7fff divisors: .word 5, -7, $b, -$d, -$11, $13 } -//SEG94 print_ln +//SEG96 print_ln // Print a newline print_ln: { - //SEG95 [45] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG97 [47] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] b1_from_print_ln: b1_from_b1: - //SEG96 [45] phi (byte*) print_line_cursor#20 = (byte*) print_line_cursor#39 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG98 [47] phi (byte*) print_line_cursor#20 = (byte*) print_line_cursor#39 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG97 print_ln::@1 + //SEG99 print_ln::@1 b1: - //SEG98 [46] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG100 [48] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc print_line_cursor @@ -4816,7 +4861,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG99 [47] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG101 [49] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -4826,36 +4871,36 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG100 print_ln::@return + //SEG102 print_ln::@return breturn: - //SEG101 [48] return + //SEG103 [50] return rts } -//SEG102 print_sword +//SEG104 print_sword // Print a signed word as HEX // print_sword(signed word zeropage(5) w) print_sword: { .label w = 5 - //SEG103 [50] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG105 [52] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1_from_print_sword - //SEG104 [51] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG106 [53] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] b2_from_print_sword: jmp b2 - //SEG105 print_sword::@2 + //SEG107 print_sword::@2 b2: - //SEG106 [52] call print_char - //SEG107 [72] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG108 [54] call print_char + //SEG109 [74] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] print_char_from_b2: - //SEG108 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#131 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG109 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 + //SEG110 [74] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#131 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG111 [74] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char jmp b3 - //SEG110 print_sword::@3 + //SEG112 print_sword::@3 b3: - //SEG111 [53] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1 + //SEG113 [55] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -4865,323 +4910,323 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG112 [54] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] + //SEG114 [56] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] b1_from_print_sword: b1_from_b3: - //SEG113 [54] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#131 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG114 [54] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#5 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy + //SEG115 [56] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#131 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy + //SEG116 [56] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#5 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy jmp b1 - //SEG115 print_sword::@1 + //SEG117 print_sword::@1 b1: - //SEG116 [55] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 -- vwuz1=vwuz2 + //SEG118 [57] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 -- vwuz1=vwuz2 lda w sta print_word.w lda w+1 sta print_word.w+1 - //SEG117 [56] call print_word - //SEG118 [58] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] + //SEG119 [58] call print_word + //SEG120 [60] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] print_word_from_b1: - //SEG119 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG120 [58] phi (word) print_word::w#5 = (word~) print_word::w#7 [phi:print_sword::@1->print_word#1] -- register_copy + //SEG121 [60] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy + //SEG122 [60] phi (word) print_word::w#5 = (word~) print_word::w#7 [phi:print_sword::@1->print_word#1] -- register_copy jsr print_word jmp breturn - //SEG121 print_sword::@return + //SEG123 print_sword::@return breturn: - //SEG122 [57] return + //SEG124 [59] return rts } -//SEG123 print_word +//SEG125 print_word // Print a word as HEX // print_word(word zeropage(7) w) print_word: { .label w = 7 - //SEG124 [59] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 + //SEG126 [61] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG125 [60] call print_byte - //SEG126 [64] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG127 [62] call print_byte + //SEG128 [66] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG127 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy - //SEG128 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + //SEG129 [66] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy + //SEG130 [66] phi (byte) print_byte::b#7 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG129 print_word::@1 + //SEG131 print_word::@1 b1: - //SEG130 [61] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 + //SEG132 [63] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG131 [62] call print_byte - //SEG132 [64] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG133 [64] call print_byte + //SEG134 [66] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG133 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG134 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG135 [66] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG136 [66] phi (byte) print_byte::b#7 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG135 print_word::@return + //SEG137 print_word::@return breturn: - //SEG136 [63] return + //SEG138 [65] return rts } -//SEG137 print_byte +//SEG139 print_byte // Print a byte as HEX // print_byte(byte zeropage(9) b) print_byte: { - .label _0 = $40 - .label _2 = $41 + .label _0 = $42 + .label _2 = $43 .label b = 9 - //SEG138 [65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG140 [67] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG139 [66] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG141 [68] (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 - //SEG140 [67] call print_char - //SEG141 [72] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG142 [69] call print_char + //SEG143 [74] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG142 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy - //SEG143 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy + //SEG144 [74] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy + //SEG145 [74] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG144 print_byte::@1 + //SEG146 print_byte::@1 b1: - //SEG145 [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) $f -- vbuz1=vbuz2_band_vbuc1 + //SEG147 [70] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) $f -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG146 [69] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG148 [71] (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 - //SEG147 [70] call print_char - //SEG148 [72] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG149 [72] call print_char + //SEG150 [74] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG149 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG150 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG151 [74] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG152 [74] 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 - //SEG151 print_byte::@return + //SEG153 print_byte::@return breturn: - //SEG152 [71] return + //SEG154 [73] return rts } -//SEG153 print_char +//SEG155 print_char // Print a single char // print_char(byte zeropage($a) ch) print_char: { .label ch = $a - //SEG154 [73] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuz2 + //SEG156 [75] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG155 [74] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 -- pbuz1=_inc_pbuz1 + //SEG157 [76] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG156 print_char::@return + //SEG158 print_char::@return breturn: - //SEG157 [75] return + //SEG159 [77] return rts } -//SEG158 print_str +//SEG160 print_str // Print a zero-terminated string // print_str(byte* zeropage($d) str) print_str: { .label str = $d - //SEG159 [77] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG161 [79] 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: - //SEG160 [77] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#18 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG161 [77] phi (byte*) print_str::str#13 = (byte*) print_str::str#15 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG162 [79] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#18 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG163 [79] phi (byte*) print_str::str#13 = (byte*) print_str::str#15 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG162 print_str::@1 + //SEG164 print_str::@1 b1: - //SEG163 [78] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG165 [80] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG164 print_str::@return + //SEG166 print_str::@return breturn: - //SEG165 [79] return + //SEG167 [81] return rts - //SEG166 print_str::@2 + //SEG168 print_str::@2 b2: - //SEG167 [80] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) -- _deref_pbuz1=_deref_pbuz2 + //SEG169 [82] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG168 [81] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 + //SEG170 [83] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG169 [82] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 -- pbuz1=_inc_pbuz1 + //SEG171 [84] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG170 div16s +//SEG172 div16s // Perform division on two signed 16-bit numbers // Returns dividend/divisor. // The remainder will be set into the global variable rem16s. // Implemented using simple binary division // Follows the C99 standard by truncating toward zero on negative results. // See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5 -// div16s(signed word zeropage($38) dividend, signed word zeropage($3a) divisor) +// div16s(signed word zeropage($3a) dividend, signed word zeropage($3c) divisor) div16s: { - .label return = $48 - .label dividend = $38 - .label divisor = $3a - .label return_2 = $3c - //SEG171 [83] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 -- vwsz1=vwsz2 + .label return = $4a + .label dividend = $3a + .label divisor = $3c + .label return_2 = $3e + //SEG173 [85] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 -- vwsz1=vwsz2 lda dividend sta divr16s.dividend lda dividend+1 sta divr16s.dividend+1 - //SEG172 [84] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 -- vwsz1=vwsz2 + //SEG174 [86] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 -- vwsz1=vwsz2 lda divisor sta divr16s.divisor lda divisor+1 sta divr16s.divisor+1 - //SEG173 [85] call divr16s + //SEG175 [87] call divr16s jsr divr16s - //SEG174 [86] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 -- vwsz1=vwsz2 + //SEG176 [88] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 -- vwsz1=vwsz2 lda divr16s.return sta divr16s.return_3 lda divr16s.return+1 sta divr16s.return_3+1 jmp b1 - //SEG175 div16s::@1 + //SEG177 div16s::@1 b1: - //SEG176 [87] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 -- vwsz1=vwsz2 + //SEG178 [89] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 -- vwsz1=vwsz2 lda divr16s.return_3 sta return lda divr16s.return_3+1 sta return+1 jmp breturn - //SEG177 div16s::@return + //SEG179 div16s::@return breturn: - //SEG178 [88] return + //SEG180 [90] return rts } -//SEG179 divr16s +//SEG181 divr16s // Perform division on two signed 16-bit numbers with an initial remainder. // Returns dividend/divisor. The remainder will be set into the global variable rem16s. // Implemented using simple binary division // Follows the C99 standard by truncating toward zero on negative results. // See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5 -// divr16s(signed word zeropage($42) dividend, signed word zeropage($44) divisor) +// divr16s(signed word zeropage($44) dividend, signed word zeropage($46) divisor) divr16s: { .const rem = 0 - .label _8 = $50 - .label _13 = $4e + .label _8 = $52 + .label _13 = $50 .label neg = $15 - .label resultu = $4c + .label resultu = $4e .label return = $16 - .label dividend = $42 - .label divisor = $44 - .label return_3 = $46 + .label dividend = $44 + .label divisor = $46 + .label return_3 = $48 .label dividendu = $f .label divisoru = $13 .label remu = $11 - //SEG180 [89] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 + //SEG182 [91] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 lda dividend+1 bmi b1 jmp b7 - //SEG181 divr16s::@7 + //SEG183 divr16s::@7 b7: - //SEG182 [90] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 -- vwuz1=vwuz2 + //SEG184 [92] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 -- vwuz1=vwuz2 lda dividend sta dividendu lda dividend+1 sta dividendu+1 - //SEG183 [91] phi from divr16s::@7 to divr16s::@2 [phi:divr16s::@7->divr16s::@2] + //SEG185 [93] phi from divr16s::@7 to divr16s::@2 [phi:divr16s::@7->divr16s::@2] b2_from_b7: - //SEG184 [91] phi (word) divr16s::remu#3 = ((word))(const signed word) divr16s::rem#0 [phi:divr16s::@7->divr16s::@2#0] -- vwuz1=vbuc1 + //SEG186 [93] phi (word) divr16s::remu#3 = ((word))(const signed word) divr16s::rem#0 [phi:divr16s::@7->divr16s::@2#0] -- vwuz1=vbuc1 lda #rem sta remu lda #0 sta remu+1 - //SEG185 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#8 [phi:divr16s::@7->divr16s::@2#1] -- register_copy - //SEG186 [91] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@7->divr16s::@2#2] -- vbuz1=vbuc1 + //SEG187 [93] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#8 [phi:divr16s::@7->divr16s::@2#1] -- register_copy + //SEG188 [93] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@7->divr16s::@2#2] -- vbuz1=vbuc1 lda #0 sta neg jmp b2 - //SEG187 divr16s::@2 + //SEG189 divr16s::@2 b2: - //SEG188 [92] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 + //SEG190 [94] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 lda divisor+1 bmi b3 jmp b8 - //SEG189 divr16s::@8 + //SEG191 divr16s::@8 b8: - //SEG190 [93] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 -- vwuz1=vwuz2 + //SEG192 [95] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 -- vwuz1=vwuz2 lda divisor sta divisoru lda divisor+1 sta divisoru+1 - //SEG191 [94] phi from divr16s::@3 divr16s::@8 to divr16s::@4 [phi:divr16s::@3/divr16s::@8->divr16s::@4] + //SEG193 [96] phi from divr16s::@3 divr16s::@8 to divr16s::@4 [phi:divr16s::@3/divr16s::@8->divr16s::@4] b4_from_b3: b4_from_b8: - //SEG192 [94] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@8->divr16s::@4#0] -- register_copy - //SEG193 [94] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@8->divr16s::@4#1] -- register_copy + //SEG194 [96] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@8->divr16s::@4#0] -- register_copy + //SEG195 [96] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@8->divr16s::@4#1] -- register_copy jmp b4 - //SEG194 divr16s::@4 + //SEG196 divr16s::@4 b4: - //SEG195 [95] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 -- vwuz1=vwuz2 + //SEG197 [97] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 -- vwuz1=vwuz2 lda dividendu sta divr16u.dividend lda dividendu+1 sta divr16u.dividend+1 - //SEG196 [96] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 -- vwuz1=vwuz2 + //SEG198 [98] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 -- vwuz1=vwuz2 lda divisoru sta divr16u.divisor lda divisoru+1 sta divr16u.divisor+1 - //SEG197 [97] (word) divr16u::rem#4 ← (word) divr16s::remu#3 -- vwuz1=vwuz2 + //SEG199 [99] (word) divr16u::rem#4 ← (word) divr16s::remu#3 -- vwuz1=vwuz2 lda remu sta divr16u.rem lda remu+1 sta divr16u.rem+1 - //SEG198 [98] call divr16u - //SEG199 [113] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] + //SEG200 [100] call divr16u + //SEG201 [115] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] divr16u_from_b4: - //SEG200 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:divr16s::@4->divr16u#0] -- register_copy - //SEG201 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#2 [phi:divr16s::@4->divr16u#1] -- register_copy - //SEG202 [113] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:divr16s::@4->divr16u#2] -- register_copy + //SEG202 [115] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:divr16s::@4->divr16u#0] -- register_copy + //SEG203 [115] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#2 [phi:divr16s::@4->divr16u#1] -- register_copy + //SEG204 [115] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:divr16s::@4->divr16u#2] -- register_copy jsr divr16u - //SEG203 [99] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG205 [101] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_3 lda divr16u.return+1 sta divr16u.return_3+1 jmp b6 - //SEG204 divr16s::@6 + //SEG206 divr16s::@6 b6: - //SEG205 [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 + //SEG207 [102] (word) divr16s::resultu#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 lda divr16u.return_3 sta resultu lda divr16u.return_3+1 sta resultu+1 - //SEG206 [101] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@9 -- vbuz1_eq_0_then_la1 + //SEG208 [103] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@9 -- vbuz1_eq_0_then_la1 lda neg cmp #0 beq b9 jmp b5 - //SEG207 divr16s::@5 + //SEG209 divr16s::@5 b5: - //SEG208 [102] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 -- vwsz1=_neg_vwsz2 + //SEG210 [104] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 -- vwsz1=_neg_vwsz2 sec lda rem16u eor #$ff @@ -5191,7 +5236,7 @@ divr16s: { eor #$ff adc #0 sta rem16s+1 - //SEG209 [103] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz2 + //SEG211 [105] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz2 sec lda resultu eor #$ff @@ -5201,32 +5246,32 @@ divr16s: { eor #$ff adc #0 sta return+1 - //SEG210 [104] phi from divr16s::@5 divr16s::@9 to divr16s::@return [phi:divr16s::@5/divr16s::@9->divr16s::@return] + //SEG212 [106] phi from divr16s::@5 divr16s::@9 to divr16s::@return [phi:divr16s::@5/divr16s::@9->divr16s::@return] breturn_from_b5: breturn_from_b9: - //SEG211 [104] phi (signed word) rem16s#11 = (signed word) rem16s#2 [phi:divr16s::@5/divr16s::@9->divr16s::@return#0] -- register_copy - //SEG212 [104] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@5/divr16s::@9->divr16s::@return#1] -- register_copy + //SEG213 [106] phi (signed word) rem16s#11 = (signed word) rem16s#2 [phi:divr16s::@5/divr16s::@9->divr16s::@return#0] -- register_copy + //SEG214 [106] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@5/divr16s::@9->divr16s::@return#1] -- register_copy jmp breturn - //SEG213 divr16s::@return + //SEG215 divr16s::@return breturn: - //SEG214 [105] return + //SEG216 [107] return rts - //SEG215 divr16s::@9 + //SEG217 divr16s::@9 b9: - //SEG216 [106] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 -- vwsz1=vwsz2 + //SEG218 [108] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 -- vwsz1=vwsz2 lda resultu sta return lda resultu+1 sta return+1 - //SEG217 [107] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 -- vwsz1=vwsz2 + //SEG219 [109] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 -- vwsz1=vwsz2 lda rem16u sta rem16s lda rem16u+1 sta rem16s+1 jmp breturn_from_b9 - //SEG218 divr16s::@3 + //SEG220 divr16s::@3 b3: - //SEG219 [108] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz2 + //SEG221 [110] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz2 sec lda divisor eor #$ff @@ -5236,19 +5281,19 @@ divr16s: { eor #$ff adc #0 sta _13+1 - //SEG220 [109] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG222 [111] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 lda #1 eor neg sta neg - //SEG221 [110] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 -- vwuz1=vwuz2 + //SEG223 [112] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 -- vwuz1=vwuz2 lda _13 sta divisoru lda _13+1 sta divisoru+1 jmp b4_from_b3 - //SEG222 divr16s::@1 + //SEG224 divr16s::@1 b1: - //SEG223 [111] (signed word~) divr16s::$8 ← - (signed word) divr16s::dividend#0 -- vwsz1=_neg_vwsz2 + //SEG225 [113] (signed word~) divr16s::$8 ← - (signed word) divr16s::dividend#0 -- vwsz1=_neg_vwsz2 sec lda dividend eor #$ff @@ -5258,98 +5303,98 @@ divr16s: { eor #$ff adc #0 sta _8+1 - //SEG224 [112] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$8 -- vwuz1=vwuz2 + //SEG226 [114] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$8 -- vwuz1=vwuz2 lda _8 sta dividendu lda _8+1 sta dividendu+1 - //SEG225 [91] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] + //SEG227 [93] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] b2_from_b1: - //SEG226 [91] phi (word) divr16s::remu#3 = ((word))-(const signed word) divr16s::rem#0 [phi:divr16s::@1->divr16s::@2#0] -- vwuz1=vbuc1 + //SEG228 [93] phi (word) divr16s::remu#3 = ((word))-(const signed word) divr16s::rem#0 [phi:divr16s::@1->divr16s::@2#0] -- vwuz1=vbuc1 lda #-rem sta remu lda #0 sta remu+1 - //SEG227 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#7 [phi:divr16s::@1->divr16s::@2#1] -- register_copy - //SEG228 [91] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuz1=vbuc1 + //SEG229 [93] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#7 [phi:divr16s::@1->divr16s::@2#1] -- register_copy + //SEG230 [93] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuz1=vbuc1 lda #1 sta neg jmp b2 } -//SEG229 divr16u +//SEG231 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u // Implemented using simple binary division // divr16u(word zeropage($1e) dividend, word zeropage($1a) divisor, word zeropage($1c) rem) divr16u: { - .label _1 = $52 - .label _2 = $53 + .label _1 = $54 + .label _2 = $55 .label rem = $1c .label dividend = $1e .label quotient = $20 .label i = $22 .label return = $20 .label divisor = $1a - .label return_2 = $71 - .label return_3 = $4a - //SEG230 [114] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + .label return_2 = $75 + .label return_3 = $4c + //SEG232 [116] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG231 [114] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG233 [116] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG232 [114] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG234 [116] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #0 sta quotient lda #0 sta quotient+1 - //SEG233 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG234 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG235 [116] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG236 [116] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG235 [114] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG237 [116] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG236 [114] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG237 [114] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG238 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG239 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG238 [116] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG239 [116] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG240 [116] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG241 [116] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG240 divr16u::@1 + //SEG242 divr16u::@1 b1: - //SEG241 [115] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG243 [117] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG242 [116] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 + //SEG244 [118] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG243 [117] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 -- vbuz1=vbuz2_band_vbuc1 + //SEG245 [119] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _1 sta _2 - //SEG244 [118] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG246 [120] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 lda _2 cmp #0 beq b2_from_b1 jmp b4 - //SEG245 divr16u::@4 + //SEG247 divr16u::@4 b4: - //SEG246 [119] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG248 [121] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG247 [120] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG249 [122] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG248 [120] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG250 [122] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG249 divr16u::@2 + //SEG251 divr16u::@2 b2: - //SEG250 [121] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG252 [123] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG251 [122] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG253 [124] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG252 [123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + //SEG254 [125] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 lda rem+1 cmp divisor+1 bcc b3_from_b2 @@ -5359,14 +5404,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG253 divr16u::@5 + //SEG255 divr16u::@5 b5: - //SEG254 [124] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG256 [126] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG255 [125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 + //SEG257 [127] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -5374,255 +5419,255 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG256 [126] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG258 [128] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG257 [126] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG258 [126] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG259 [128] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG260 [128] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG259 divr16u::@3 + //SEG261 divr16u::@3 b3: - //SEG260 [127] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG262 [129] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG261 [128] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG263 [130] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$10 cmp i bne b1_from_b3 jmp b6 - //SEG262 divr16u::@6 + //SEG264 divr16u::@6 b6: - //SEG263 [129] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 + //SEG265 [131] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 lda rem sta rem16u lda rem+1 sta rem16u+1 jmp breturn - //SEG264 divr16u::@return + //SEG266 divr16u::@return breturn: - //SEG265 [130] return + //SEG267 [132] return rts } -//SEG266 test_8s +//SEG268 test_8s test_8s: { - .label dividend = $56 - .label divisor = $57 - .label res = $5b + .label dividend = $58 + .label divisor = $59 + .label res = $5d .label i = $23 - //SEG267 [132] phi from test_8s to test_8s::@1 [phi:test_8s->test_8s::@1] + //SEG269 [134] phi from test_8s to test_8s::@1 [phi:test_8s->test_8s::@1] b1_from_test_8s: - //SEG268 [132] phi (byte) test_8s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8s->test_8s::@1#0] -- vbuz1=vbuc1 + //SEG270 [134] phi (byte) test_8s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8s->test_8s::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG269 [132] phi from test_8s::@10 to test_8s::@1 [phi:test_8s::@10->test_8s::@1] + //SEG271 [134] phi from test_8s::@10 to test_8s::@1 [phi:test_8s::@10->test_8s::@1] b1_from_b10: - //SEG270 [132] phi (byte) test_8s::i#10 = (byte) test_8s::i#1 [phi:test_8s::@10->test_8s::@1#0] -- register_copy + //SEG272 [134] phi (byte) test_8s::i#10 = (byte) test_8s::i#1 [phi:test_8s::@10->test_8s::@1#0] -- register_copy jmp b1 - //SEG271 test_8s::@1 + //SEG273 test_8s::@1 b1: - //SEG272 [133] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG274 [135] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend - //SEG273 [134] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG275 [136] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda divisors,y sta divisor - //SEG274 [135] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsz1=vbsz2 + //SEG276 [137] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsz1=vbsz2 lda dividend sta div8s.dividend - //SEG275 [136] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 + //SEG277 [138] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 lda divisor sta div8s.divisor - //SEG276 [137] call div8s + //SEG278 [139] call div8s jsr div8s - //SEG277 [138] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 -- vbsz1=vbsz2 + //SEG279 [140] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 -- vbsz1=vbsz2 lda div8s.return sta div8s.return_3 jmp b2 - //SEG278 test_8s::@2 + //SEG280 test_8s::@2 b2: - //SEG279 [139] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 -- vbsz1=vbsz2 + //SEG281 [141] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 -- vbsz1=vbsz2 lda div8s.return_3 sta res - //SEG280 [140] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 -- vbsz1=vbsz2 + //SEG282 [142] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 -- vbsz1=vbsz2 lda dividend sta print_sbyte.b - //SEG281 [141] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG283 [143] (byte*~) print_char_cursor#184 ← (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 - //SEG282 [142] call print_sbyte - //SEG283 [160] phi from test_8s::@2 to print_sbyte [phi:test_8s::@2->print_sbyte] + //SEG284 [144] call print_sbyte + //SEG285 [162] phi from test_8s::@2 to print_sbyte [phi:test_8s::@2->print_sbyte] print_sbyte_from_b2: - //SEG284 [160] phi (byte*) print_char_cursor#132 = (byte*~) print_char_cursor#184 [phi:test_8s::@2->print_sbyte#0] -- register_copy - //SEG285 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#1 [phi:test_8s::@2->print_sbyte#1] -- register_copy + //SEG286 [162] phi (byte*) print_char_cursor#132 = (byte*~) print_char_cursor#184 [phi:test_8s::@2->print_sbyte#0] -- register_copy + //SEG287 [162] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#1 [phi:test_8s::@2->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG286 [143] phi from test_8s::@2 to test_8s::@3 [phi:test_8s::@2->test_8s::@3] + //SEG288 [145] phi from test_8s::@2 to test_8s::@3 [phi:test_8s::@2->test_8s::@3] b3_from_b2: jmp b3 - //SEG287 test_8s::@3 + //SEG289 test_8s::@3 b3: - //SEG288 [144] call print_str - //SEG289 [76] phi from test_8s::@3 to print_str [phi:test_8s::@3->print_str] + //SEG290 [146] call print_str + //SEG291 [78] phi from test_8s::@3 to print_str [phi:test_8s::@3->print_str] print_str_from_b3: - //SEG290 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_8s::@3->print_str#0] -- pbuz1=pbuc1 + //SEG292 [78] phi (byte*) print_str::str#15 = (const string) str [phi:test_8s::@3->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b4 - //SEG291 test_8s::@4 + //SEG293 test_8s::@4 b4: - //SEG292 [145] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 + //SEG294 [147] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 lda divisor sta print_sbyte.b - //SEG293 [146] call print_sbyte - //SEG294 [160] phi from test_8s::@4 to print_sbyte [phi:test_8s::@4->print_sbyte] + //SEG295 [148] call print_sbyte + //SEG296 [162] phi from test_8s::@4 to print_sbyte [phi:test_8s::@4->print_sbyte] print_sbyte_from_b4: - //SEG295 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@4->print_sbyte#0] -- register_copy - //SEG296 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#2 [phi:test_8s::@4->print_sbyte#1] -- register_copy + //SEG297 [162] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@4->print_sbyte#0] -- register_copy + //SEG298 [162] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#2 [phi:test_8s::@4->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG297 [147] phi from test_8s::@4 to test_8s::@5 [phi:test_8s::@4->test_8s::@5] + //SEG299 [149] phi from test_8s::@4 to test_8s::@5 [phi:test_8s::@4->test_8s::@5] b5_from_b4: jmp b5 - //SEG298 test_8s::@5 + //SEG300 test_8s::@5 b5: - //SEG299 [148] call print_str - //SEG300 [76] phi from test_8s::@5 to print_str [phi:test_8s::@5->print_str] + //SEG301 [150] call print_str + //SEG302 [78] phi from test_8s::@5 to print_str [phi:test_8s::@5->print_str] print_str_from_b5: - //SEG301 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8s::@5->print_str#0] -- pbuz1=pbuc1 + //SEG303 [78] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8s::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b6 - //SEG302 test_8s::@6 + //SEG304 test_8s::@6 b6: - //SEG303 [149] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 -- vbsz1=vbsz2 + //SEG305 [151] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 -- vbsz1=vbsz2 lda res sta print_sbyte.b - //SEG304 [150] call print_sbyte - //SEG305 [160] phi from test_8s::@6 to print_sbyte [phi:test_8s::@6->print_sbyte] + //SEG306 [152] call print_sbyte + //SEG307 [162] phi from test_8s::@6 to print_sbyte [phi:test_8s::@6->print_sbyte] print_sbyte_from_b6: - //SEG306 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@6->print_sbyte#0] -- register_copy - //SEG307 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#3 [phi:test_8s::@6->print_sbyte#1] -- register_copy + //SEG308 [162] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@6->print_sbyte#0] -- register_copy + //SEG309 [162] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#3 [phi:test_8s::@6->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG308 [151] phi from test_8s::@6 to test_8s::@7 [phi:test_8s::@6->test_8s::@7] + //SEG310 [153] phi from test_8s::@6 to test_8s::@7 [phi:test_8s::@6->test_8s::@7] b7_from_b6: jmp b7 - //SEG309 test_8s::@7 + //SEG311 test_8s::@7 b7: - //SEG310 [152] call print_str - //SEG311 [76] phi from test_8s::@7 to print_str [phi:test_8s::@7->print_str] + //SEG312 [154] call print_str + //SEG313 [78] phi from test_8s::@7 to print_str [phi:test_8s::@7->print_str] print_str_from_b7: - //SEG312 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8s::@7->print_str#0] -- pbuz1=pbuc1 + //SEG314 [78] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8s::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b8 - //SEG313 test_8s::@8 + //SEG315 test_8s::@8 b8: - //SEG314 [153] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 -- vbsz1=vbsz2 + //SEG316 [155] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 -- vbsz1=vbsz2 lda rem8s sta print_sbyte.b - //SEG315 [154] call print_sbyte - //SEG316 [160] phi from test_8s::@8 to print_sbyte [phi:test_8s::@8->print_sbyte] + //SEG317 [156] call print_sbyte + //SEG318 [162] phi from test_8s::@8 to print_sbyte [phi:test_8s::@8->print_sbyte] print_sbyte_from_b8: - //SEG317 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@8->print_sbyte#0] -- register_copy - //SEG318 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#4 [phi:test_8s::@8->print_sbyte#1] -- register_copy + //SEG319 [162] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@8->print_sbyte#0] -- register_copy + //SEG320 [162] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#4 [phi:test_8s::@8->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG319 [155] phi from test_8s::@8 to test_8s::@9 [phi:test_8s::@8->test_8s::@9] + //SEG321 [157] phi from test_8s::@8 to test_8s::@9 [phi:test_8s::@8->test_8s::@9] b9_from_b8: jmp b9 - //SEG320 test_8s::@9 + //SEG322 test_8s::@9 b9: - //SEG321 [156] call print_ln - //SEG322 [44] phi from test_8s::@9 to print_ln [phi:test_8s::@9->print_ln] + //SEG323 [158] call print_ln + //SEG324 [46] phi from test_8s::@9 to print_ln [phi:test_8s::@9->print_ln] print_ln_from_b9: - //SEG323 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_8s::@9->print_ln#0] -- register_copy + //SEG325 [46] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_8s::@9->print_ln#0] -- register_copy jsr print_ln jmp b10 - //SEG324 test_8s::@10 + //SEG326 test_8s::@10 b10: - //SEG325 [157] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 -- vbuz1=_inc_vbuz1 + //SEG327 [159] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG326 [158] if((byte) test_8s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8s::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG328 [160] if((byte) test_8s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8s::@1 -- vbuz1_neq_vbuc1_then_la1 lda #6 cmp i bne b1_from_b10 jmp breturn - //SEG327 test_8s::@return + //SEG329 test_8s::@return breturn: - //SEG328 [159] return + //SEG330 [161] return rts dividends: .byte $7f, -$7f, -$7f, $7f, $7f, $7f divisors: .byte 5, 7, -$b, -$d, $11, $13 } -//SEG329 print_sbyte +//SEG331 print_sbyte // Print a signed byte as HEX // print_sbyte(signed byte zeropage($24) b) print_sbyte: { .label b = $24 - //SEG330 [161] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG332 [163] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1_from_print_sbyte - //SEG331 [162] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG333 [164] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] b3_from_print_sbyte: jmp b3 - //SEG332 print_sbyte::@3 + //SEG334 print_sbyte::@3 b3: - //SEG333 [163] call print_char - //SEG334 [72] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG335 [165] call print_char + //SEG336 [74] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] print_char_from_b3: - //SEG335 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG336 [72] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 + //SEG337 [74] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG338 [74] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char - //SEG337 [164] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] + //SEG339 [166] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] b2_from_b3: b2_from_b4: - //SEG338 [164] phi (signed byte) print_sbyte::b#7 = (signed byte) print_sbyte::b#10 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy + //SEG340 [166] phi (signed byte) print_sbyte::b#7 = (signed byte) print_sbyte::b#10 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy jmp b2 - //SEG339 print_sbyte::@2 + //SEG341 print_sbyte::@2 b2: - //SEG340 [165] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#7 -- vbuz1=vbuz2 + //SEG342 [167] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#7 -- vbuz1=vbuz2 lda b sta print_byte.b - //SEG341 [166] call print_byte - //SEG342 [64] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG343 [168] call print_byte + //SEG344 [66] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] print_byte_from_b2: - //SEG343 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG344 [64] phi (byte) print_byte::b#7 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG345 [66] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG346 [66] phi (byte) print_byte::b#7 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG345 print_sbyte::@return + //SEG347 print_sbyte::@return breturn: - //SEG346 [167] return + //SEG348 [169] return rts - //SEG347 [168] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG349 [170] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 - //SEG348 print_sbyte::@1 + //SEG350 print_sbyte::@1 b1: - //SEG349 [169] call print_char - //SEG350 [72] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG351 [171] call print_char + //SEG352 [74] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - //SEG351 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG352 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 + //SEG353 [74] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG354 [74] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuz1=vbuc1 lda #'-' sta print_char.ch jsr print_char jmp b4 - //SEG353 print_sbyte::@4 + //SEG355 print_sbyte::@4 b4: - //SEG354 [170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 -- vbsz1=_neg_vbsz1 + //SEG356 [172] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -5630,740 +5675,747 @@ print_sbyte: { sta b jmp b2_from_b4 } -//SEG355 div8s +//SEG357 div8s // Perform division on two signed 8-bit numbers // Returns dividend/divisor. // The remainder will be set into the global variable rem8s. // Implemented using simple binary division // Follows the C99 standard by truncating toward zero on negative results. // See http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf section 6.5.5 -// div8s(signed byte zeropage($58) dividend, signed byte zeropage($59) divisor) +// div8s(signed byte zeropage($5a) dividend, signed byte zeropage($5b) divisor) div8s: { - .label _5 = $5f - .label _8 = $5e + .label _5 = $61 + .label _8 = $60 .label neg = $27 - .label resultu = $5d + .label resultu = $5f .label return = $28 - .label dividend = $58 - .label divisor = $59 - .label return_3 = $5a + .label dividend = $5a + .label divisor = $5b + .label return_3 = $5c .label dividendu = $25 .label divisoru = $26 - //SEG356 [171] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1 -- vbsz1_lt_0_then_la1 + //SEG358 [173] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1 -- vbsz1_lt_0_then_la1 lda dividend bmi b1 jmp b7 - //SEG357 div8s::@7 + //SEG359 div8s::@7 b7: - //SEG358 [172] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 -- vbuz1=vbuz2 + //SEG360 [174] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 -- vbuz1=vbuz2 lda dividend sta dividendu - //SEG359 [173] phi from div8s::@7 to div8s::@2 [phi:div8s::@7->div8s::@2] + //SEG361 [175] phi from div8s::@7 to div8s::@2 [phi:div8s::@7->div8s::@2] b2_from_b7: - //SEG360 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#8 [phi:div8s::@7->div8s::@2#0] -- register_copy - //SEG361 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8s::@7->div8s::@2#1] -- vbuz1=vbuc1 + //SEG362 [175] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#8 [phi:div8s::@7->div8s::@2#0] -- register_copy + //SEG363 [175] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8s::@7->div8s::@2#1] -- vbuz1=vbuc1 lda #0 sta neg jmp b2 - //SEG362 div8s::@2 + //SEG364 div8s::@2 b2: - //SEG363 [174] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3 -- vbsz1_lt_0_then_la1 + //SEG365 [176] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3 -- vbsz1_lt_0_then_la1 lda divisor bmi b3 jmp b8 - //SEG364 div8s::@8 + //SEG366 div8s::@8 b8: - //SEG365 [175] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 -- vbuz1=vbuz2 + //SEG367 [177] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 -- vbuz1=vbuz2 lda divisor sta divisoru - //SEG366 [176] phi from div8s::@3 div8s::@8 to div8s::@4 [phi:div8s::@3/div8s::@8->div8s::@4] + //SEG368 [178] phi from div8s::@3 div8s::@8 to div8s::@4 [phi:div8s::@3/div8s::@8->div8s::@4] b4_from_b3: b4_from_b8: - //SEG367 [176] phi (byte) div8s::neg#4 = (byte) div8s::neg#2 [phi:div8s::@3/div8s::@8->div8s::@4#0] -- register_copy - //SEG368 [176] phi (byte) div8s::divisoru#3 = (byte~) div8s::divisoru#4 [phi:div8s::@3/div8s::@8->div8s::@4#1] -- register_copy + //SEG369 [178] phi (byte) div8s::neg#4 = (byte) div8s::neg#2 [phi:div8s::@3/div8s::@8->div8s::@4#0] -- register_copy + //SEG370 [178] phi (byte) div8s::divisoru#3 = (byte~) div8s::divisoru#4 [phi:div8s::@3/div8s::@8->div8s::@4#1] -- register_copy jmp b4 - //SEG369 div8s::@4 + //SEG371 div8s::@4 b4: - //SEG370 [177] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuz1=vbuz2 + //SEG372 [179] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuz1=vbuz2 lda dividendu sta div8u.dividend - //SEG371 [178] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 -- vbuz1=vbuz2 + //SEG373 [180] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 -- vbuz1=vbuz2 lda divisoru sta div8u.divisor - //SEG372 [179] call div8u - //SEG373 [194] phi from div8s::@4 to div8u [phi:div8s::@4->div8u] + //SEG374 [181] call div8u + //SEG375 [196] phi from div8s::@4 to div8u [phi:div8s::@4->div8u] div8u_from_b4: - //SEG374 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#0 [phi:div8s::@4->div8u#0] -- register_copy - //SEG375 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8s::@4->div8u#1] -- register_copy + //SEG376 [196] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#0 [phi:div8s::@4->div8u#0] -- register_copy + //SEG377 [196] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8s::@4->div8u#1] -- register_copy jsr div8u - //SEG376 [180] (byte) div8u::return#2 ← (byte) div8u::return#0 -- vbuz1=vbuz2 + //SEG378 [182] (byte) div8u::return#2 ← (byte) div8u::return#0 -- vbuz1=vbuz2 lda div8u.return sta div8u.return_2 jmp b6 - //SEG377 div8s::@6 + //SEG379 div8s::@6 b6: - //SEG378 [181] (byte) div8s::resultu#0 ← (byte) div8u::return#2 -- vbuz1=vbuz2 + //SEG380 [183] (byte) div8s::resultu#0 ← (byte) div8u::return#2 -- vbuz1=vbuz2 lda div8u.return_2 sta resultu - //SEG379 [182] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@9 -- vbuz1_eq_0_then_la1 + //SEG381 [184] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@9 -- vbuz1_eq_0_then_la1 lda neg cmp #0 beq b9 jmp b5 - //SEG380 div8s::@5 + //SEG382 div8s::@5 b5: - //SEG381 [183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 -- vbsz1=_neg_vbsz2 + //SEG383 [185] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 -- vbsz1=_neg_vbsz2 lda rem8u eor #$ff clc adc #1 sta rem8s - //SEG382 [184] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 -- vbsz1=_neg_vbsz2 + //SEG384 [186] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 -- vbsz1=_neg_vbsz2 lda resultu eor #$ff clc adc #1 sta return - //SEG383 [185] phi from div8s::@5 div8s::@9 to div8s::@return [phi:div8s::@5/div8s::@9->div8s::@return] + //SEG385 [187] phi from div8s::@5 div8s::@9 to div8s::@return [phi:div8s::@5/div8s::@9->div8s::@return] breturn_from_b5: breturn_from_b9: - //SEG384 [185] phi (signed byte) rem8s#3 = (signed byte) rem8s#2 [phi:div8s::@5/div8s::@9->div8s::@return#0] -- register_copy - //SEG385 [185] phi (signed byte) div8s::return#2 = (signed byte) div8s::return#1 [phi:div8s::@5/div8s::@9->div8s::@return#1] -- register_copy + //SEG386 [187] phi (signed byte) rem8s#3 = (signed byte) rem8s#2 [phi:div8s::@5/div8s::@9->div8s::@return#0] -- register_copy + //SEG387 [187] phi (signed byte) div8s::return#2 = (signed byte) div8s::return#1 [phi:div8s::@5/div8s::@9->div8s::@return#1] -- register_copy jmp breturn - //SEG386 div8s::@return + //SEG388 div8s::@return breturn: - //SEG387 [186] return + //SEG389 [188] return rts - //SEG388 div8s::@9 + //SEG390 div8s::@9 b9: - //SEG389 [187] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 -- vbsz1=vbsz2 + //SEG391 [189] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 -- vbsz1=vbsz2 lda resultu sta return - //SEG390 [188] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 -- vbsz1=vbsz2 + //SEG392 [190] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 -- vbsz1=vbsz2 lda rem8u sta rem8s jmp breturn_from_b9 - //SEG391 div8s::@3 + //SEG393 div8s::@3 b3: - //SEG392 [189] (signed byte~) div8s::$8 ← - (signed byte) div8s::divisor#0 -- vbsz1=_neg_vbsz2 + //SEG394 [191] (signed byte~) div8s::$8 ← - (signed byte) div8s::divisor#0 -- vbsz1=_neg_vbsz2 lda divisor eor #$ff clc adc #1 sta _8 - //SEG393 [190] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG395 [192] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 lda #1 eor neg sta neg - //SEG394 [191] (byte~) div8s::divisoru#4 ← (byte)(signed byte~) div8s::$8 -- vbuz1=vbuz2 + //SEG396 [193] (byte~) div8s::divisoru#4 ← (byte)(signed byte~) div8s::$8 -- vbuz1=vbuz2 lda _8 sta divisoru jmp b4_from_b3 - //SEG395 div8s::@1 + //SEG397 div8s::@1 b1: - //SEG396 [192] (signed byte~) div8s::$5 ← - (signed byte) div8s::dividend#0 -- vbsz1=_neg_vbsz2 + //SEG398 [194] (signed byte~) div8s::$5 ← - (signed byte) div8s::dividend#0 -- vbsz1=_neg_vbsz2 lda dividend eor #$ff clc adc #1 sta _5 - //SEG397 [193] (byte~) div8s::dividendu#7 ← (byte)(signed byte~) div8s::$5 -- vbuz1=vbuz2 + //SEG399 [195] (byte~) div8s::dividendu#7 ← (byte)(signed byte~) div8s::$5 -- vbuz1=vbuz2 lda _5 sta dividendu - //SEG398 [173] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2] + //SEG400 [175] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2] b2_from_b1: - //SEG399 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy - //SEG400 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:div8s::@1->div8s::@2#1] -- vbuz1=vbuc1 + //SEG401 [175] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy + //SEG402 [175] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:div8s::@1->div8s::@2#1] -- vbuz1=vbuc1 lda #1 sta neg jmp b2 } -//SEG401 div8u +//SEG403 div8u // Performs division on two 8 bit unsigned bytes // Returns dividend/divisor. // The remainder will be set into the global variable rem8u // Implemented using simple binary division // div8u(byte zeropage($2a) dividend, byte zeropage($2b) divisor) div8u: { - .label return = $62 + .label return = $64 .label dividend = $2a .label divisor = $2b - .label return_2 = $5c - .label return_3 = $77 - //SEG402 [195] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuz2 + .label return_2 = $5e + .label return_3 = $7b + //SEG404 [197] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuz2 lda dividend sta divr8u.dividend - //SEG403 [196] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuz2 + //SEG405 [198] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuz2 lda divisor sta divr8u.divisor - //SEG404 [197] call divr8u - //SEG405 [201] phi from div8u to divr8u [phi:div8u->divr8u] + //SEG406 [199] call divr8u + //SEG407 [203] phi from div8u to divr8u [phi:div8u->divr8u] divr8u_from_div8u: jsr divr8u - //SEG406 [198] (byte) divr8u::return#0 ← (byte) divr8u::return#1 -- vbuz1=vbuz2 + //SEG408 [200] (byte) divr8u::return#0 ← (byte) divr8u::return#1 -- vbuz1=vbuz2 lda divr8u.return_1 sta divr8u.return jmp b1 - //SEG407 div8u::@1 + //SEG409 div8u::@1 b1: - //SEG408 [199] (byte) div8u::return#0 ← (byte) divr8u::return#0 -- vbuz1=vbuz2 + //SEG410 [201] (byte) div8u::return#0 ← (byte) divr8u::return#0 -- vbuz1=vbuz2 lda divr8u.return sta return jmp breturn - //SEG409 div8u::@return + //SEG411 div8u::@return breturn: - //SEG410 [200] return + //SEG412 [202] return rts } -//SEG411 divr8u +//SEG413 divr8u // Performs division on two 8 bit unsigned bytes and an initial remainder // Returns dividend/divisor. // The final remainder will be set into the global variable rem8u // Implemented using simple binary division -// divr8u(byte zeropage($2d) dividend, byte zeropage($60) divisor, byte zeropage($2c) rem) +// divr8u(byte zeropage($2d) dividend, byte zeropage($62) divisor, byte zeropage($2c) rem) divr8u: { - .label _1 = $63 + .label _1 = $65 .label dividend = $2d - .label divisor = $60 - .label return = $61 + .label divisor = $62 + .label return = $63 .label rem = $2c .label quotient = $2e .label i = $2f .label return_1 = $2e - //SEG412 [202] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1] + //SEG414 [204] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1] b1_from_divr8u: - //SEG413 [202] phi (byte) divr8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#0] -- vbuz1=vbuc1 + //SEG415 [204] phi (byte) divr8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG414 [202] phi (byte) divr8u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1 + //SEG416 [204] phi (byte) divr8u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1 lda #0 sta quotient - //SEG415 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#0 [phi:divr8u->divr8u::@1#2] -- register_copy - //SEG416 [202] phi (byte) divr8u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#3] -- vbuz1=vbuc1 + //SEG417 [204] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#0 [phi:divr8u->divr8u::@1#2] -- register_copy + //SEG418 [204] phi (byte) divr8u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#3] -- vbuz1=vbuc1 lda #0 sta rem jmp b1 - //SEG417 [202] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1] + //SEG419 [204] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1] b1_from_b3: - //SEG418 [202] phi (byte) divr8u::i#2 = (byte) divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy - //SEG419 [202] phi (byte) divr8u::quotient#3 = (byte) divr8u::return#1 [phi:divr8u::@3->divr8u::@1#1] -- register_copy - //SEG420 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#1 [phi:divr8u::@3->divr8u::@1#2] -- register_copy - //SEG421 [202] phi (byte) divr8u::rem#4 = (byte) divr8u::rem#10 [phi:divr8u::@3->divr8u::@1#3] -- register_copy + //SEG420 [204] phi (byte) divr8u::i#2 = (byte) divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy + //SEG421 [204] phi (byte) divr8u::quotient#3 = (byte) divr8u::return#1 [phi:divr8u::@3->divr8u::@1#1] -- register_copy + //SEG422 [204] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#1 [phi:divr8u::@3->divr8u::@1#2] -- register_copy + //SEG423 [204] phi (byte) divr8u::rem#4 = (byte) divr8u::rem#10 [phi:divr8u::@3->divr8u::@1#3] -- register_copy jmp b1 - //SEG422 divr8u::@1 + //SEG424 divr8u::@1 b1: - //SEG423 [203] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG425 [205] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl rem - //SEG424 [204] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) $80 -- vbuz1=vbuz2_band_vbuc1 + //SEG426 [206] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) $80 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and dividend sta _1 - //SEG425 [205] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2 -- vbuz1_eq_0_then_la1 + //SEG427 [207] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b2_from_b1 jmp b4 - //SEG426 divr8u::@4 + //SEG428 divr8u::@4 b4: - //SEG427 [206] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bor_vbuc1 + //SEG429 [208] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG428 [207] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2] + //SEG430 [209] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2] b2_from_b1: b2_from_b4: - //SEG429 [207] phi (byte) divr8u::rem#5 = (byte) divr8u::rem#1 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy + //SEG431 [209] phi (byte) divr8u::rem#5 = (byte) divr8u::rem#1 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy jmp b2 - //SEG430 divr8u::@2 + //SEG432 divr8u::@2 b2: - //SEG431 [208] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG433 [210] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl dividend - //SEG432 [209] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG434 [211] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl quotient - //SEG433 [210] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 -- vbuz1_lt_vbuz2_then_la1 + //SEG435 [212] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 -- vbuz1_lt_vbuz2_then_la1 lda rem cmp divisor bcc b3_from_b2 jmp b5 - //SEG434 divr8u::@5 + //SEG436 divr8u::@5 b5: - //SEG435 [211] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 -- vbuz1=_inc_vbuz1 + //SEG437 [213] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 -- vbuz1=_inc_vbuz1 inc quotient - //SEG436 [212] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 -- vbuz1=vbuz1_minus_vbuz2 + //SEG438 [214] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 -- vbuz1=vbuz1_minus_vbuz2 lda rem sec sbc divisor sta rem - //SEG437 [213] phi from divr8u::@2 divr8u::@5 to divr8u::@3 [phi:divr8u::@2/divr8u::@5->divr8u::@3] + //SEG439 [215] phi from divr8u::@2 divr8u::@5 to divr8u::@3 [phi:divr8u::@2/divr8u::@5->divr8u::@3] b3_from_b2: b3_from_b5: - //SEG438 [213] phi (byte) divr8u::return#1 = (byte) divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy - //SEG439 [213] phi (byte) divr8u::rem#10 = (byte) divr8u::rem#5 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy + //SEG440 [215] phi (byte) divr8u::return#1 = (byte) divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy + //SEG441 [215] phi (byte) divr8u::rem#10 = (byte) divr8u::rem#5 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy jmp b3 - //SEG440 divr8u::@3 + //SEG442 divr8u::@3 b3: - //SEG441 [214] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 -- vbuz1=_inc_vbuz1 + //SEG443 [216] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG442 [215] if((byte) divr8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto divr8u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG444 [217] if((byte) divr8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto divr8u::@1 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp i bne b1_from_b3 jmp b6 - //SEG443 divr8u::@6 + //SEG445 divr8u::@6 b6: - //SEG444 [216] (byte) rem8u#17 ← (byte) divr8u::rem#10 -- vbuz1=vbuz2 + //SEG446 [218] (byte) rem8u#17 ← (byte) divr8u::rem#10 -- vbuz1=vbuz2 lda rem sta rem8u jmp breturn - //SEG445 divr8u::@return + //SEG447 divr8u::@return breturn: - //SEG446 [217] return + //SEG448 [219] return rts } -//SEG447 test_16u +//SEG449 test_16u test_16u: { - .label dividend = $65 - .label divisor = $67 - .label res = $6f + .label _10 = $67 + .label _11 = $6a + .label dividend = $68 + .label divisor = $6b + .label res = $73 .label i = $30 - //SEG448 [219] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] + //SEG450 [221] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] b1_from_test_16u: - //SEG449 [219] phi (byte) test_16u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#0] -- vbuz1=vbuc1 + //SEG451 [221] phi (byte) test_16u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG450 [219] phi from test_16u::@10 to test_16u::@1 [phi:test_16u::@10->test_16u::@1] + //SEG452 [221] phi from test_16u::@10 to test_16u::@1 [phi:test_16u::@10->test_16u::@1] b1_from_b10: - //SEG451 [219] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@10->test_16u::@1#0] -- register_copy + //SEG453 [221] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@10->test_16u::@1#0] -- register_copy jmp b1 - //SEG452 test_16u::@1 + //SEG454 test_16u::@1 b1: - //SEG453 [220] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 - ldy i + //SEG455 [222] (byte) test_16u::$10 ← (byte) test_16u::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda i + asl + sta _10 + //SEG456 [223] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::$10) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy _10 lda dividends,y sta dividend lda dividends+1,y sta dividend+1 - //SEG454 [221] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 - ldy i + //SEG457 [224] (byte) test_16u::$11 ← (byte) test_16u::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda i + asl + sta _11 + //SEG458 [225] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::$11) -- vwuz1=pwuc1_derefidx_vbuz2 + ldy _11 lda divisors,y sta divisor lda divisors+1,y sta divisor+1 - //SEG455 [222] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 -- vwuz1=vwuz2 + //SEG459 [226] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 -- vwuz1=vwuz2 lda dividend sta div16u.dividend lda dividend+1 sta div16u.dividend+1 - //SEG456 [223] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 + //SEG460 [227] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 lda divisor sta div16u.divisor lda divisor+1 sta div16u.divisor+1 - //SEG457 [224] call div16u + //SEG461 [228] call div16u jsr div16u - //SEG458 [225] (word) div16u::return#2 ← (word) div16u::return#0 -- vwuz1=vwuz2 + //SEG462 [229] (word) div16u::return#2 ← (word) div16u::return#0 -- vwuz1=vwuz2 lda div16u.return sta div16u.return_2 lda div16u.return+1 sta div16u.return_2+1 jmp b2 - //SEG459 test_16u::@2 + //SEG463 test_16u::@2 b2: - //SEG460 [226] (word) test_16u::res#0 ← (word) div16u::return#2 -- vwuz1=vwuz2 + //SEG464 [230] (word) test_16u::res#0 ← (word) div16u::return#2 -- vwuz1=vwuz2 lda div16u.return_2 sta res lda div16u.return_2+1 sta res+1 - //SEG461 [227] (word) print_word::w#1 ← (word) test_16u::dividend#0 -- vwuz1=vwuz2 + //SEG465 [231] (word) print_word::w#1 ← (word) test_16u::dividend#0 -- vwuz1=vwuz2 lda dividend sta print_word.w lda dividend+1 sta print_word.w+1 - //SEG462 [228] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG466 [232] (byte*~) print_char_cursor#166 ← (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 - //SEG463 [229] call print_word - //SEG464 [58] phi from test_16u::@2 to print_word [phi:test_16u::@2->print_word] + //SEG467 [233] call print_word + //SEG468 [60] phi from test_16u::@2 to print_word [phi:test_16u::@2->print_word] print_word_from_b2: - //SEG465 [58] phi (byte*) print_char_cursor#135 = (byte*~) print_char_cursor#166 [phi:test_16u::@2->print_word#0] -- register_copy - //SEG466 [58] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:test_16u::@2->print_word#1] -- register_copy + //SEG469 [60] phi (byte*) print_char_cursor#135 = (byte*~) print_char_cursor#166 [phi:test_16u::@2->print_word#0] -- register_copy + //SEG470 [60] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:test_16u::@2->print_word#1] -- register_copy jsr print_word - //SEG467 [230] phi from test_16u::@2 to test_16u::@3 [phi:test_16u::@2->test_16u::@3] + //SEG471 [234] phi from test_16u::@2 to test_16u::@3 [phi:test_16u::@2->test_16u::@3] b3_from_b2: jmp b3 - //SEG468 test_16u::@3 + //SEG472 test_16u::@3 b3: - //SEG469 [231] call print_str - //SEG470 [76] phi from test_16u::@3 to print_str [phi:test_16u::@3->print_str] + //SEG473 [235] call print_str + //SEG474 [78] phi from test_16u::@3 to print_str [phi:test_16u::@3->print_str] print_str_from_b3: - //SEG471 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_16u::@3->print_str#0] -- pbuz1=pbuc1 + //SEG475 [78] phi (byte*) print_str::str#15 = (const string) str [phi:test_16u::@3->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b4 - //SEG472 test_16u::@4 + //SEG476 test_16u::@4 b4: - //SEG473 [232] (word) print_word::w#2 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 + //SEG477 [236] (word) print_word::w#2 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 lda divisor sta print_word.w lda divisor+1 sta print_word.w+1 - //SEG474 [233] call print_word - //SEG475 [58] phi from test_16u::@4 to print_word [phi:test_16u::@4->print_word] + //SEG478 [237] call print_word + //SEG479 [60] phi from test_16u::@4 to print_word [phi:test_16u::@4->print_word] print_word_from_b4: - //SEG476 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@4->print_word#0] -- register_copy - //SEG477 [58] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:test_16u::@4->print_word#1] -- register_copy + //SEG480 [60] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@4->print_word#0] -- register_copy + //SEG481 [60] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:test_16u::@4->print_word#1] -- register_copy jsr print_word - //SEG478 [234] phi from test_16u::@4 to test_16u::@5 [phi:test_16u::@4->test_16u::@5] + //SEG482 [238] phi from test_16u::@4 to test_16u::@5 [phi:test_16u::@4->test_16u::@5] b5_from_b4: jmp b5 - //SEG479 test_16u::@5 + //SEG483 test_16u::@5 b5: - //SEG480 [235] call print_str - //SEG481 [76] phi from test_16u::@5 to print_str [phi:test_16u::@5->print_str] + //SEG484 [239] call print_str + //SEG485 [78] phi from test_16u::@5 to print_str [phi:test_16u::@5->print_str] print_str_from_b5: - //SEG482 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16u::@5->print_str#0] -- pbuz1=pbuc1 + //SEG486 [78] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16u::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b6 - //SEG483 test_16u::@6 + //SEG487 test_16u::@6 b6: - //SEG484 [236] (word) print_word::w#3 ← (word) test_16u::res#0 -- vwuz1=vwuz2 + //SEG488 [240] (word) print_word::w#3 ← (word) test_16u::res#0 -- vwuz1=vwuz2 lda res sta print_word.w lda res+1 sta print_word.w+1 - //SEG485 [237] call print_word - //SEG486 [58] phi from test_16u::@6 to print_word [phi:test_16u::@6->print_word] + //SEG489 [241] call print_word + //SEG490 [60] phi from test_16u::@6 to print_word [phi:test_16u::@6->print_word] print_word_from_b6: - //SEG487 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@6->print_word#0] -- register_copy - //SEG488 [58] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:test_16u::@6->print_word#1] -- register_copy + //SEG491 [60] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@6->print_word#0] -- register_copy + //SEG492 [60] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:test_16u::@6->print_word#1] -- register_copy jsr print_word - //SEG489 [238] phi from test_16u::@6 to test_16u::@7 [phi:test_16u::@6->test_16u::@7] + //SEG493 [242] phi from test_16u::@6 to test_16u::@7 [phi:test_16u::@6->test_16u::@7] b7_from_b6: jmp b7 - //SEG490 test_16u::@7 + //SEG494 test_16u::@7 b7: - //SEG491 [239] call print_str - //SEG492 [76] phi from test_16u::@7 to print_str [phi:test_16u::@7->print_str] + //SEG495 [243] call print_str + //SEG496 [78] phi from test_16u::@7 to print_str [phi:test_16u::@7->print_str] print_str_from_b7: - //SEG493 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16u::@7->print_str#0] -- pbuz1=pbuc1 + //SEG497 [78] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16u::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b8 - //SEG494 test_16u::@8 + //SEG498 test_16u::@8 b8: - //SEG495 [240] (word) print_word::w#4 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG499 [244] (word) print_word::w#4 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta print_word.w lda rem16u+1 sta print_word.w+1 - //SEG496 [241] call print_word - //SEG497 [58] phi from test_16u::@8 to print_word [phi:test_16u::@8->print_word] + //SEG500 [245] call print_word + //SEG501 [60] phi from test_16u::@8 to print_word [phi:test_16u::@8->print_word] print_word_from_b8: - //SEG498 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@8->print_word#0] -- register_copy - //SEG499 [58] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:test_16u::@8->print_word#1] -- register_copy + //SEG502 [60] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@8->print_word#0] -- register_copy + //SEG503 [60] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:test_16u::@8->print_word#1] -- register_copy jsr print_word - //SEG500 [242] phi from test_16u::@8 to test_16u::@9 [phi:test_16u::@8->test_16u::@9] + //SEG504 [246] phi from test_16u::@8 to test_16u::@9 [phi:test_16u::@8->test_16u::@9] b9_from_b8: jmp b9 - //SEG501 test_16u::@9 + //SEG505 test_16u::@9 b9: - //SEG502 [243] call print_ln - //SEG503 [44] phi from test_16u::@9 to print_ln [phi:test_16u::@9->print_ln] + //SEG506 [247] call print_ln + //SEG507 [46] phi from test_16u::@9 to print_ln [phi:test_16u::@9->print_ln] print_ln_from_b9: - //SEG504 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16u::@9->print_ln#0] -- register_copy + //SEG508 [46] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16u::@9->print_ln#0] -- register_copy jsr print_ln jmp b10 - //SEG505 test_16u::@10 + //SEG509 test_16u::@10 b10: - //SEG506 [244] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 - lda i - clc - adc #2 - sta i - //SEG507 [245] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $c) goto test_16u::@1 -- vbuz1_neq_vbuc1_then_la1 - lda #$c + //SEG510 [248] (byte) test_16u::i#1 ← ++ (byte) test_16u::i#10 -- vbuz1=_inc_vbuz1 + inc i + //SEG511 [249] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_16u::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #6 cmp i bne b1_from_b10 jmp breturn - //SEG508 test_16u::@return + //SEG512 test_16u::@return breturn: - //SEG509 [246] return + //SEG513 [250] return rts dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff divisors: .word 5, 7, $b, $d, $11, $13 } -//SEG510 div16u +//SEG514 div16u // Performs division on two 16 bit unsigned words // Returns the quotient dividend/divisor. // The remainder will be set into the global variable rem16u // Implemented using simple binary division -// div16u(word zeropage($69) dividend, word zeropage($6b) divisor) +// div16u(word zeropage($6d) dividend, word zeropage($6f) divisor) div16u: { - .label return = $73 - .label dividend = $69 - .label divisor = $6b - .label return_2 = $6d - //SEG511 [247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 -- vwuz1=vwuz2 + .label return = $77 + .label dividend = $6d + .label divisor = $6f + .label return_2 = $71 + //SEG515 [251] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 -- vwuz1=vwuz2 lda dividend sta divr16u.dividend lda dividend+1 sta divr16u.dividend+1 - //SEG512 [248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 -- vwuz1=vwuz2 + //SEG516 [252] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 -- vwuz1=vwuz2 lda divisor sta divr16u.divisor lda divisor+1 sta divr16u.divisor+1 - //SEG513 [249] call divr16u - //SEG514 [113] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG517 [253] call divr16u + //SEG518 [115] phi from div16u to divr16u [phi:div16u->divr16u] divr16u_from_div16u: - //SEG515 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:div16u->divr16u#0] -- register_copy - //SEG516 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:div16u->divr16u#1] -- register_copy - //SEG517 [113] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->divr16u#2] -- vwuz1=vbuc1 + //SEG519 [115] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:div16u->divr16u#0] -- register_copy + //SEG520 [115] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:div16u->divr16u#1] -- register_copy + //SEG521 [115] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->divr16u#2] -- vwuz1=vbuc1 lda #0 sta divr16u.rem lda #0 sta divr16u.rem+1 jsr divr16u - //SEG518 [250] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG522 [254] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_2 lda divr16u.return+1 sta divr16u.return_2+1 jmp b1 - //SEG519 div16u::@1 + //SEG523 div16u::@1 b1: - //SEG520 [251] (word) div16u::return#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG524 [255] (word) div16u::return#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return_2 sta return lda divr16u.return_2+1 sta return+1 jmp breturn - //SEG521 div16u::@return + //SEG525 div16u::@return breturn: - //SEG522 [252] return + //SEG526 [256] return rts } -//SEG523 test_8u +//SEG527 test_8u test_8u: { - .label dividend = $75 - .label divisor = $76 - .label res = $78 + .label dividend = $79 + .label divisor = $7a + .label res = $7c .label i = $31 - //SEG524 [254] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1] + //SEG528 [258] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1] b1_from_test_8u: - //SEG525 [254] phi (byte*) print_line_cursor#41 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 + //SEG529 [258] phi (byte*) print_line_cursor#41 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG526 [254] phi (byte*) print_char_cursor#138 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 + //SEG530 [258] phi (byte*) print_char_cursor#138 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG527 [254] phi (byte) test_8u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 + //SEG531 [258] phi (byte) test_8u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG528 test_8u::@1 + //SEG532 test_8u::@1 b1: - //SEG529 [255] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG533 [259] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend - //SEG530 [256] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG534 [260] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda divisors,y sta divisor - //SEG531 [257] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuz1=vbuz2 + //SEG535 [261] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuz1=vbuz2 lda dividend sta div8u.dividend - //SEG532 [258] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 + //SEG536 [262] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 lda divisor sta div8u.divisor - //SEG533 [259] call div8u - //SEG534 [194] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] + //SEG537 [263] call div8u + //SEG538 [196] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] div8u_from_b1: - //SEG535 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#1 [phi:test_8u::@1->div8u#0] -- register_copy - //SEG536 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:test_8u::@1->div8u#1] -- register_copy + //SEG539 [196] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#1 [phi:test_8u::@1->div8u#0] -- register_copy + //SEG540 [196] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:test_8u::@1->div8u#1] -- register_copy jsr div8u - //SEG537 [260] (byte) div8u::return#3 ← (byte) div8u::return#0 -- vbuz1=vbuz2 + //SEG541 [264] (byte) div8u::return#3 ← (byte) div8u::return#0 -- vbuz1=vbuz2 lda div8u.return sta div8u.return_3 jmp b2 - //SEG538 test_8u::@2 + //SEG542 test_8u::@2 b2: - //SEG539 [261] (byte) test_8u::res#0 ← (byte) div8u::return#3 -- vbuz1=vbuz2 + //SEG543 [265] (byte) test_8u::res#0 ← (byte) div8u::return#3 -- vbuz1=vbuz2 lda div8u.return_3 sta res - //SEG540 [262] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 -- vbuz1=vbuz2 + //SEG544 [266] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 -- vbuz1=vbuz2 lda dividend sta print_byte.b - //SEG541 [263] call print_byte - //SEG542 [64] phi from test_8u::@2 to print_byte [phi:test_8u::@2->print_byte] + //SEG545 [267] call print_byte + //SEG546 [66] phi from test_8u::@2 to print_byte [phi:test_8u::@2->print_byte] print_byte_from_b2: - //SEG543 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#138 [phi:test_8u::@2->print_byte#0] -- register_copy - //SEG544 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#3 [phi:test_8u::@2->print_byte#1] -- register_copy + //SEG547 [66] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#138 [phi:test_8u::@2->print_byte#0] -- register_copy + //SEG548 [66] phi (byte) print_byte::b#7 = (byte) print_byte::b#3 [phi:test_8u::@2->print_byte#1] -- register_copy jsr print_byte - //SEG545 [264] phi from test_8u::@2 to test_8u::@3 [phi:test_8u::@2->test_8u::@3] + //SEG549 [268] phi from test_8u::@2 to test_8u::@3 [phi:test_8u::@2->test_8u::@3] b3_from_b2: jmp b3 - //SEG546 test_8u::@3 + //SEG550 test_8u::@3 b3: - //SEG547 [265] call print_str - //SEG548 [76] phi from test_8u::@3 to print_str [phi:test_8u::@3->print_str] + //SEG551 [269] call print_str + //SEG552 [78] phi from test_8u::@3 to print_str [phi:test_8u::@3->print_str] print_str_from_b3: - //SEG549 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_8u::@3->print_str#0] -- pbuz1=pbuc1 + //SEG553 [78] phi (byte*) print_str::str#15 = (const string) str [phi:test_8u::@3->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b4 - //SEG550 test_8u::@4 + //SEG554 test_8u::@4 b4: - //SEG551 [266] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 + //SEG555 [270] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 lda divisor sta print_byte.b - //SEG552 [267] call print_byte - //SEG553 [64] phi from test_8u::@4 to print_byte [phi:test_8u::@4->print_byte] + //SEG556 [271] call print_byte + //SEG557 [66] phi from test_8u::@4 to print_byte [phi:test_8u::@4->print_byte] print_byte_from_b4: - //SEG554 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@4->print_byte#0] -- register_copy - //SEG555 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#4 [phi:test_8u::@4->print_byte#1] -- register_copy + //SEG558 [66] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@4->print_byte#0] -- register_copy + //SEG559 [66] phi (byte) print_byte::b#7 = (byte) print_byte::b#4 [phi:test_8u::@4->print_byte#1] -- register_copy jsr print_byte - //SEG556 [268] phi from test_8u::@4 to test_8u::@5 [phi:test_8u::@4->test_8u::@5] + //SEG560 [272] phi from test_8u::@4 to test_8u::@5 [phi:test_8u::@4->test_8u::@5] b5_from_b4: jmp b5 - //SEG557 test_8u::@5 + //SEG561 test_8u::@5 b5: - //SEG558 [269] call print_str - //SEG559 [76] phi from test_8u::@5 to print_str [phi:test_8u::@5->print_str] + //SEG562 [273] call print_str + //SEG563 [78] phi from test_8u::@5 to print_str [phi:test_8u::@5->print_str] print_str_from_b5: - //SEG560 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8u::@5->print_str#0] -- pbuz1=pbuc1 + //SEG564 [78] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8u::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b6 - //SEG561 test_8u::@6 + //SEG565 test_8u::@6 b6: - //SEG562 [270] (byte) print_byte::b#5 ← (byte) test_8u::res#0 -- vbuz1=vbuz2 + //SEG566 [274] (byte) print_byte::b#5 ← (byte) test_8u::res#0 -- vbuz1=vbuz2 lda res sta print_byte.b - //SEG563 [271] call print_byte - //SEG564 [64] phi from test_8u::@6 to print_byte [phi:test_8u::@6->print_byte] + //SEG567 [275] call print_byte + //SEG568 [66] phi from test_8u::@6 to print_byte [phi:test_8u::@6->print_byte] print_byte_from_b6: - //SEG565 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@6->print_byte#0] -- register_copy - //SEG566 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#5 [phi:test_8u::@6->print_byte#1] -- register_copy + //SEG569 [66] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@6->print_byte#0] -- register_copy + //SEG570 [66] phi (byte) print_byte::b#7 = (byte) print_byte::b#5 [phi:test_8u::@6->print_byte#1] -- register_copy jsr print_byte - //SEG567 [272] phi from test_8u::@6 to test_8u::@7 [phi:test_8u::@6->test_8u::@7] + //SEG571 [276] phi from test_8u::@6 to test_8u::@7 [phi:test_8u::@6->test_8u::@7] b7_from_b6: jmp b7 - //SEG568 test_8u::@7 + //SEG572 test_8u::@7 b7: - //SEG569 [273] call print_str - //SEG570 [76] phi from test_8u::@7 to print_str [phi:test_8u::@7->print_str] + //SEG573 [277] call print_str + //SEG574 [78] phi from test_8u::@7 to print_str [phi:test_8u::@7->print_str] print_str_from_b7: - //SEG571 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8u::@7->print_str#0] -- pbuz1=pbuc1 + //SEG575 [78] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8u::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b8 - //SEG572 test_8u::@8 + //SEG576 test_8u::@8 b8: - //SEG573 [274] (byte) print_byte::b#6 ← (byte) rem8u#17 -- vbuz1=vbuz2 + //SEG577 [278] (byte) print_byte::b#6 ← (byte) rem8u#17 -- vbuz1=vbuz2 lda rem8u sta print_byte.b - //SEG574 [275] call print_byte - //SEG575 [64] phi from test_8u::@8 to print_byte [phi:test_8u::@8->print_byte] + //SEG578 [279] call print_byte + //SEG579 [66] phi from test_8u::@8 to print_byte [phi:test_8u::@8->print_byte] print_byte_from_b8: - //SEG576 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@8->print_byte#0] -- register_copy - //SEG577 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#6 [phi:test_8u::@8->print_byte#1] -- register_copy + //SEG580 [66] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@8->print_byte#0] -- register_copy + //SEG581 [66] phi (byte) print_byte::b#7 = (byte) print_byte::b#6 [phi:test_8u::@8->print_byte#1] -- register_copy jsr print_byte - //SEG578 [276] phi from test_8u::@8 to test_8u::@9 [phi:test_8u::@8->test_8u::@9] + //SEG582 [280] phi from test_8u::@8 to test_8u::@9 [phi:test_8u::@8->test_8u::@9] b9_from_b8: jmp b9 - //SEG579 test_8u::@9 + //SEG583 test_8u::@9 b9: - //SEG580 [277] call print_ln - //SEG581 [44] phi from test_8u::@9 to print_ln [phi:test_8u::@9->print_ln] + //SEG584 [281] call print_ln + //SEG585 [46] phi from test_8u::@9 to print_ln [phi:test_8u::@9->print_ln] print_ln_from_b9: - //SEG582 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#41 [phi:test_8u::@9->print_ln#0] -- register_copy + //SEG586 [46] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#41 [phi:test_8u::@9->print_ln#0] -- register_copy jsr print_ln jmp b10 - //SEG583 test_8u::@10 + //SEG587 test_8u::@10 b10: - //SEG584 [278] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 -- vbuz1=_inc_vbuz1 + //SEG588 [282] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG585 [279] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@11 -- vbuz1_neq_vbuc1_then_la1 + //SEG589 [283] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@11 -- vbuz1_neq_vbuc1_then_la1 lda #6 cmp i bne b11 jmp breturn - //SEG586 test_8u::@return + //SEG590 test_8u::@return breturn: - //SEG587 [280] return + //SEG591 [284] return rts - //SEG588 test_8u::@11 + //SEG592 test_8u::@11 b11: - //SEG589 [281] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG593 [285] (byte*~) print_char_cursor#188 ← (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 - //SEG590 [254] phi from test_8u::@11 to test_8u::@1 [phi:test_8u::@11->test_8u::@1] + //SEG594 [258] phi from test_8u::@11 to test_8u::@1 [phi:test_8u::@11->test_8u::@1] b1_from_b11: - //SEG591 [254] phi (byte*) print_line_cursor#41 = (byte*) print_line_cursor#1 [phi:test_8u::@11->test_8u::@1#0] -- register_copy - //SEG592 [254] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@11->test_8u::@1#1] -- register_copy - //SEG593 [254] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@11->test_8u::@1#2] -- register_copy + //SEG595 [258] phi (byte*) print_line_cursor#41 = (byte*) print_line_cursor#1 [phi:test_8u::@11->test_8u::@1#0] -- register_copy + //SEG596 [258] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@11->test_8u::@1#1] -- register_copy + //SEG597 [258] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@11->test_8u::@1#2] -- register_copy jmp b1 dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff divisors: .byte 5, 7, $b, $d, $11, $13 } -//SEG594 print_cls +//SEG598 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $32 - //SEG595 [283] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG599 [287] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG596 [283] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG600 [287] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG597 [283] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG601 [287] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG598 [283] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG602 [287] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG599 print_cls::@1 + //SEG603 print_cls::@1 b1: - //SEG600 [284] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG604 [288] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG601 [285] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG605 [289] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG602 [286] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG606 [290] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -6371,9 +6423,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG603 print_cls::@return + //SEG607 print_cls::@return breturn: - //SEG604 [287] return + //SEG608 [291] return rts } print_hextab: .text "0123456789abcdef" @@ -6382,277 +6434,289 @@ print_cls: { str1: .text " = @" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10) [ test_16s::i#10 test_16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [17] (byte) test_16s::$16 ← (byte) test_16s::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ test_16s::i#10 test_16s::$16 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::$16 print_line_cursor#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] -Statement [18] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::i#10) [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [19] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [20] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [22] (signed word) div16s::return#2 ← (signed word) div16s::return#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [23] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [24] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [25] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#159 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#159 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [29] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#128 ] ) always clobbers reg byte a -Statement [33] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#128 ] ) always clobbers reg byte a -Statement [37] (signed word) print_sword::w#4 ← (signed word) rem16s#11 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#128 ] ) always clobbers reg byte a -Statement [46] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::test_16s:13::print_ln:40 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8s:11::print_ln:156 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_16u:9::print_ln:243 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8u:7::print_ln:277 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a +Statement [18] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::$16) [ test_16s::i#10 test_16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [19] (byte) test_16s::$17 ← (byte) test_16s::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ test_16s::i#10 test_16s::dividend#0 test_16s::$17 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::$17 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [20] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::$17) [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [21] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [22] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [24] (signed word) div16s::return#2 ← (signed word) div16s::return#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a +Statement [25] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a +Statement [26] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a +Statement [27] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#159 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#159 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a +Statement [31] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#128 ] ) always clobbers reg byte a +Statement [35] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#128 ] ) always clobbers reg byte a +Statement [39] (signed word) print_sword::w#4 ← (signed word) rem16s#11 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#128 ] ) always clobbers reg byte a +Statement [48] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::test_16s:13::print_ln:42 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8s:11::print_ln:158 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_16u:9::print_ln:247 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8u:7::print_ln:281 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:35 [ test_8s::i#10 test_8s::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ test_16u::i#10 test_16u::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:49 [ test_8u::i#10 test_8u::i#1 ] -Statement [47] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::test_16s:13::print_ln:40 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8s:11::print_ln:156 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_16u:9::print_ln:243 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8u:7::print_ln:277 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [50] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_sword::w#5 print_char_cursor#131 ] ( main:2::test_16s:13::print_sword:26 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:30 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:34 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:38 [ test_16s::i#10 print_line_cursor#1 print_sword::w#5 print_char_cursor#131 ] ) always clobbers reg byte a -Statement [53] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 [ print_char_cursor#18 print_sword::w#0 ] ( main:2::test_16s:13::print_sword:26 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:30 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:34 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:38 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] ) always clobbers reg byte a -Statement [55] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 [ print_char_cursor#130 print_word::w#7 ] ( main:2::test_16s:13::print_sword:26 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:30 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:34 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:38 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#130 print_word::w#7 ] ) always clobbers reg byte a -Statement [59] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#135 print_byte::b#1 ] ( main:2::test_16s:13::print_sword:26::print_word:56 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:30::print_word:56 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:34::print_word:56 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:38::print_word:56 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:229 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:233 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:237 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:241 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] ) always clobbers reg byte a -Statement [61] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::test_16s:13::print_sword:26::print_word:56 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:30::print_word:56 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:34::print_word:56 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:38::print_word:56 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:229 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:233 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:237 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:241 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a -Statement [65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#7 print_char_cursor#136 print_byte::$0 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:229::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:233::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:237::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:241::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:229::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:233::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:237::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:241::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:142::print_byte:166 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:146::print_byte:166 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:150::print_byte:166 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:154::print_byte:166 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:263 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:267 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:271 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:275 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] ) always clobbers reg byte a +Statement [49] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::test_16s:13::print_ln:42 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8s:11::print_ln:158 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_16u:9::print_ln:247 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8u:7::print_ln:281 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a +Statement [52] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_sword::w#5 print_char_cursor#131 ] ( main:2::test_16s:13::print_sword:28 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:32 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:36 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:40 [ test_16s::i#10 print_line_cursor#1 print_sword::w#5 print_char_cursor#131 ] ) always clobbers reg byte a +Statement [55] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 [ print_char_cursor#18 print_sword::w#0 ] ( main:2::test_16s:13::print_sword:28 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:32 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:36 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:40 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] ) always clobbers reg byte a +Statement [57] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 [ print_char_cursor#130 print_word::w#7 ] ( main:2::test_16s:13::print_sword:28 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:32 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:36 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:40 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#130 print_word::w#7 ] ) always clobbers reg byte a +Statement [61] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#135 print_byte::b#1 ] ( main:2::test_16s:13::print_sword:28::print_word:58 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:32::print_word:58 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:36::print_word:58 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:40::print_word:58 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:233 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:237 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:241 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:245 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] ) always clobbers reg byte a +Statement [63] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::test_16s:13::print_sword:28::print_word:58 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:32::print_word:58 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:36::print_word:58 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:40::print_word:58 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:233 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:237 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:241 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:245 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a +Statement [67] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#7 print_char_cursor#136 print_byte::$0 ] ( main:2::test_16s:13::print_sword:28::print_word:58::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:233::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:237::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:241::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:245::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:28::print_word:58::print_byte:64 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:64 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:64 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:64 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:233::print_byte:64 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:237::print_byte:64 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:241::print_byte:64 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:245::print_byte:64 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:144::print_byte:168 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:148::print_byte:168 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:152::print_byte:168 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:156::print_byte:168 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:267 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:271 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:275 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:279 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:87 [ test_8s::divisor#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:91 [ test_8s::res#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:89 [ test_8s::divisor#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:93 [ test_8s::res#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:41 [ rem8s#3 rem8s#2 rem8s#33 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:100 [ rem8u#17 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:118 [ test_8u::divisor#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:120 [ test_8u::res#0 ] -Statement [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) $f [ print_char_cursor#18 print_byte::$2 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:229::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:233::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:237::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:241::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:229::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:233::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:237::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:241::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:142::print_byte:166 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:146::print_byte:166 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:150::print_byte:166 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:154::print_byte:166 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:263 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:267 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:271 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:275 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a -Statement [73] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 [ print_char_cursor#82 ] ( main:2::test_16s:13::print_sword:26::print_char:52 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_char:52 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_char:52 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_char:52 [ test_16s::i#10 print_line_cursor#1 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60::print_char:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60::print_char:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60::print_char:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60::print_char:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:229::print_byte:60::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:60::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:60::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:60::print_char:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62::print_char:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62::print_char:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62::print_char:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62::print_char:67 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:229::print_byte:62::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:62::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:62::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:62::print_char:67 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:142::print_byte:166::print_char:67 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:146::print_byte:166::print_char:67 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:150::print_byte:166::print_char:67 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:154::print_byte:166::print_char:67 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:263::print_char:67 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:267::print_char:67 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:271::print_char:67 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:275::print_char:67 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60::print_char:70 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60::print_char:70 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60::print_char:70 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60::print_char:70 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:229::print_byte:60::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:60::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:60::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:60::print_char:70 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62::print_char:70 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62::print_char:70 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62::print_char:70 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62::print_char:70 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#82 ] main:2::test_16u:9::print_word:229::print_byte:62::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:62::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:62::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:62::print_char:70 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:142::print_byte:166::print_char:70 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:146::print_byte:166::print_char:70 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:150::print_byte:166::print_char:70 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:154::print_byte:166::print_char:70 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#82 ] main:2::test_8u:7::print_byte:263::print_char:70 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#82 ] main:2::test_8u:7::print_byte:267::print_char:70 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#82 ] main:2::test_8u:7::print_byte:271::print_char:70 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#82 ] main:2::test_8u:7::print_byte:275::print_char:70 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:142::print_char:163 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:146::print_char:163 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:150::print_char:163 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:154::print_char:163 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:142::print_char:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:146::print_char:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:150::print_char:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:154::print_char:169 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#82 ] ) always clobbers reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:102 [ rem8u#17 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:122 [ test_8u::divisor#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:124 [ test_8u::res#0 ] +Statement [70] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) $f [ print_char_cursor#18 print_byte::$2 ] ( main:2::test_16s:13::print_sword:28::print_word:58::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:233::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:237::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:241::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:245::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:28::print_word:58::print_byte:64 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:64 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:64 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:64 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:233::print_byte:64 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:237::print_byte:64 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:241::print_byte:64 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:245::print_byte:64 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:144::print_byte:168 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:148::print_byte:168 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:152::print_byte:168 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:156::print_byte:168 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:267 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:271 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:275 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:279 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a +Statement [75] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 [ print_char_cursor#82 ] ( main:2::test_16s:13::print_sword:28::print_char:54 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:32::print_char:54 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:36::print_char:54 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:40::print_char:54 [ test_16s::i#10 print_line_cursor#1 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:28::print_word:58::print_byte:62::print_char:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:62::print_char:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:62::print_char:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:62::print_char:69 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:62::print_char:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:62::print_char:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:62::print_char:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:245::print_byte:62::print_char:69 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:28::print_word:58::print_byte:64::print_char:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:64::print_char:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:64::print_char:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:64::print_char:69 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:64::print_char:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:64::print_char:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:64::print_char:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:245::print_byte:64::print_char:69 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:144::print_byte:168::print_char:69 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:148::print_byte:168::print_char:69 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:152::print_byte:168::print_char:69 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:156::print_byte:168::print_char:69 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:267::print_char:69 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:271::print_char:69 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:275::print_char:69 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:279::print_char:69 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:28::print_word:58::print_byte:62::print_char:72 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:62::print_char:72 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:62::print_char:72 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:62::print_char:72 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:62::print_char:72 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:62::print_char:72 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:62::print_char:72 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:245::print_byte:62::print_char:72 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:28::print_word:58::print_byte:64::print_char:72 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:64::print_char:72 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:64::print_char:72 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:64::print_char:72 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:64::print_char:72 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:64::print_char:72 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:64::print_char:72 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#82 ] main:2::test_16u:9::print_word:245::print_byte:64::print_char:72 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:144::print_byte:168::print_char:72 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:148::print_byte:168::print_char:72 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:152::print_byte:168::print_char:72 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:156::print_byte:168::print_char:72 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#82 ] main:2::test_8u:7::print_byte:267::print_char:72 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#82 ] main:2::test_8u:7::print_byte:271::print_char:72 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#82 ] main:2::test_8u:7::print_byte:275::print_char:72 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#82 ] main:2::test_8u:7::print_byte:279::print_char:72 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:144::print_char:165 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:148::print_char:165 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:152::print_char:165 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:156::print_char:165 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:144::print_char:171 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:148::print_char:171 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:152::print_char:171 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:156::print_char:171 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#82 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:48 [ test_16u::i#10 test_16u::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:35 [ test_8s::i#10 test_8s::i#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:87 [ test_8s::divisor#0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:91 [ test_8s::res#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:89 [ test_8s::divisor#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:93 [ test_8s::res#0 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:41 [ rem8s#3 rem8s#2 rem8s#33 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:100 [ rem8u#17 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:102 [ rem8u#17 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:49 [ test_8u::i#10 test_8u::i#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:118 [ test_8u::divisor#0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:120 [ test_8u::res#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:122 [ test_8u::divisor#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:124 [ test_8u::res#0 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:36 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] -Statement [78] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 [ print_char_cursor#128 print_str::str#13 ] ( main:2::test_16s:13::print_str:28 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:32 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:36 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:144 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:148 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:152 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:231 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:235 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:239 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:273 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#128 print_str::str#13 ] ) always clobbers reg byte a reg byte y -Statement [80] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) [ print_char_cursor#128 print_str::str#13 ] ( main:2::test_16s:13::print_str:28 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:32 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:36 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:144 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:148 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:152 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:231 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:235 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:239 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:273 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#128 print_str::str#13 ] ) always clobbers reg byte a reg byte y -Statement [83] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 [ div16s::divisor#0 divr16s::dividend#0 ] ( main:2::test_16s:13::div16s:21 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::divisor#0 divr16s::dividend#0 ] ) always clobbers reg byte a -Statement [84] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:21 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [86] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ rem16s#11 divr16s::return#3 ] ( main:2::test_16s:13::div16s:21 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#11 divr16s::return#3 ] ) always clobbers reg byte a -Statement [87] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 [ div16s::return#0 rem16s#11 ] ( main:2::test_16s:13::div16s:21 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::return#0 rem16s#11 ] ) always clobbers reg byte a -Statement [89] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [90] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#8 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#8 ] ) always clobbers reg byte a -Statement [92] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ) always clobbers reg byte a +Statement [80] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 [ print_char_cursor#128 print_str::str#13 ] ( main:2::test_16s:13::print_str:30 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:34 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:38 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:146 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:150 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:154 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:235 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:239 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:243 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:273 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:277 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#128 print_str::str#13 ] ) always clobbers reg byte a reg byte y +Statement [82] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) [ print_char_cursor#128 print_str::str#13 ] ( main:2::test_16s:13::print_str:30 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:34 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:38 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:146 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:150 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:154 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:235 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:239 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:243 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:273 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:277 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#128 print_str::str#13 ] ) always clobbers reg byte a reg byte y +Statement [85] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 [ div16s::divisor#0 divr16s::dividend#0 ] ( main:2::test_16s:13::div16s:23 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::divisor#0 divr16s::dividend#0 ] ) always clobbers reg byte a +Statement [86] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:23 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a +Statement [88] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ rem16s#11 divr16s::return#3 ] ( main:2::test_16s:13::div16s:23 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#11 divr16s::return#3 ] ) always clobbers reg byte a +Statement [89] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 [ div16s::return#0 rem16s#11 ] ( main:2::test_16s:13::div16s:23 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::return#0 rem16s#11 ] ) always clobbers reg byte a +Statement [91] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a +Statement [92] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#8 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#8 ] ) always clobbers reg byte a +Statement [94] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] -Statement [93] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a -Statement [95] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ) always clobbers reg byte a -Statement [96] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ) always clobbers reg byte a -Statement [97] (word) divr16u::rem#4 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [99] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#3 rem16u#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#3 rem16u#1 ] ) always clobbers reg byte a -Statement [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 [ divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ) always clobbers reg byte a -Statement [102] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 [ divr16s::resultu#0 rem16s#2 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 rem16s#2 ] ) always clobbers reg byte a -Statement [103] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ rem16s#2 divr16s::return#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#2 divr16s::return#1 ] ) always clobbers reg byte a -Statement [106] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ rem16u#1 divr16s::return#7 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16u#1 divr16s::return#7 ] ) always clobbers reg byte a -Statement [107] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 [ divr16s::return#7 rem16s#37 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::return#7 rem16s#37 ] ) always clobbers reg byte a -Statement [108] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$13 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$13 ] ) always clobbers reg byte a -Statement [109] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$13 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$13 ] ) always clobbers reg byte a -Statement [110] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a -Statement [111] (signed word~) divr16s::$8 ← - (signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::$8 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::$8 ] ) always clobbers reg byte a -Statement [112] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$8 [ divr16s::divisor#0 divr16s::dividendu#7 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#7 ] ) always clobbers reg byte a -Statement [116] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [95] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a +Statement [97] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ) always clobbers reg byte a +Statement [98] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ) always clobbers reg byte a +Statement [99] (word) divr16u::rem#4 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] ) always clobbers reg byte a +Statement [101] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#3 rem16u#1 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#3 rem16u#1 ] ) always clobbers reg byte a +Statement [102] (word) divr16s::resultu#0 ← (word) divr16u::return#3 [ divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ) always clobbers reg byte a +Statement [104] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 [ divr16s::resultu#0 rem16s#2 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 rem16s#2 ] ) always clobbers reg byte a +Statement [105] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ rem16s#2 divr16s::return#1 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#2 divr16s::return#1 ] ) always clobbers reg byte a +Statement [108] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ rem16u#1 divr16s::return#7 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16u#1 divr16s::return#7 ] ) always clobbers reg byte a +Statement [109] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 [ divr16s::return#7 rem16s#37 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::return#7 rem16s#37 ] ) always clobbers reg byte a +Statement [110] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$13 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$13 ] ) always clobbers reg byte a +Statement [111] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$13 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$13 ] ) always clobbers reg byte a +Statement [112] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a +Statement [113] (signed word~) divr16s::$8 ← - (signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::$8 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::$8 ] ) always clobbers reg byte a +Statement [114] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$8 [ divr16s::divisor#0 divr16s::dividendu#7 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#7 ] ) always clobbers reg byte a +Statement [118] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::test_16s:13::div16s:23::divr16s:87::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::test_16u:9::div16u:228::divr16u:253 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:34 [ divr16u::i#2 divr16u::i#1 ] -Statement [119] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [129] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#0 rem16u#1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [141] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#184 rem8s#3 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#184 rem8s#3 ] ) always clobbers reg byte a +Statement [121] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::test_16s:13::div16s:23::divr16s:87::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::test_16u:9::div16u:228::divr16u:253 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [125] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::test_16s:13::div16s:23::divr16s:87::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::test_16u:9::div16u:228::divr16u:253 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [127] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::test_16s:13::div16s:23::divr16s:87::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::test_16u:9::div16u:228::divr16u:253 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [131] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::test_16s:13::div16s:23::divr16s:87::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#0 rem16u#1 ] main:2::test_16u:9::div16u:228::divr16u:253 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [143] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#184 rem8s#3 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#184 rem8s#3 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] -Statement [170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::test_8s:11::print_sbyte:142 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:146 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:150 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:154 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 [ div8s::resultu#0 rem8s#2 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::resultu#0 rem8s#2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:86 [ test_8s::dividend#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:93 [ div8s::resultu#0 ] -Statement [184] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 [ rem8s#2 div8s::return#1 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 rem8s#2 div8s::return#1 ] ) always clobbers reg byte a -Statement [189] (signed byte~) div8s::$8 ← - (signed byte) div8s::divisor#0 [ div8s::neg#3 div8s::dividendu#3 div8s::$8 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#3 div8s::dividendu#3 div8s::$8 ] ) always clobbers reg byte a +Statement [172] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::test_8s:11::print_sbyte:144 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:148 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:152 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:156 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a +Statement [185] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 [ div8s::resultu#0 rem8s#2 ] ( main:2::test_8s:11::div8s:139 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::resultu#0 rem8s#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:88 [ test_8s::dividend#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:95 [ div8s::resultu#0 ] +Statement [186] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 [ rem8s#2 div8s::return#1 ] ( main:2::test_8s:11::div8s:139 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 rem8s#2 div8s::return#1 ] ) always clobbers reg byte a +Statement [191] (signed byte~) div8s::$8 ← - (signed byte) div8s::divisor#0 [ div8s::neg#3 div8s::dividendu#3 div8s::$8 ] ( main:2::test_8s:11::div8s:139 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#3 div8s::dividendu#3 div8s::$8 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:37 [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] -Statement [190] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8s::dividendu#3 div8s::neg#2 div8s::$8 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::dividendu#3 div8s::neg#2 div8s::$8 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:94 [ div8s::$8 ] -Statement [192] (signed byte~) div8s::$5 ← - (signed byte) div8s::dividend#0 [ div8s::divisor#0 div8s::$5 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::divisor#0 div8s::$5 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:89 [ div8s::divisor#0 ] -Statement [206] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ( main:2::test_8s:11::div8s:137::div8u:179::divr8u:197 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] main:2::test_8u:7::div8u:259::divr8u:197 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:96 [ divr8u::divisor#0 ] +Statement [192] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8s::dividendu#3 div8s::neg#2 div8s::$8 ] ( main:2::test_8s:11::div8s:139 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::dividendu#3 div8s::neg#2 div8s::$8 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:96 [ div8s::$8 ] +Statement [194] (signed byte~) div8s::$5 ← - (signed byte) div8s::dividend#0 [ div8s::divisor#0 div8s::$5 ] ( main:2::test_8s:11::div8s:139 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::divisor#0 div8s::$5 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:91 [ div8s::divisor#0 ] +Statement [208] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ( main:2::test_8s:11::div8s:139::div8u:181::divr8u:199 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] main:2::test_8u:7::div8u:263::divr8u:199 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:98 [ divr8u::divisor#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:45 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ divr8u::i#2 divr8u::i#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:117 [ test_8u::dividend#0 ] -Statement [212] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 [ divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ( main:2::test_8s:11::div8s:137::div8u:179::divr8u:197 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] main:2::test_8u:7::div8u:259::divr8u:197 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ) always clobbers reg byte a -Statement [220] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 ] ) always clobbers reg byte a -Statement [221] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ) always clobbers reg byte a -Statement [222] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ) always clobbers reg byte a -Statement [223] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ) always clobbers reg byte a -Statement [225] (word) div16u::return#2 ← (word) div16u::return#0 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ) always clobbers reg byte a -Statement [226] (word) test_16u::res#0 ← (word) div16u::return#2 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [227] (word) print_word::w#1 ← (word) test_16u::dividend#0 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [228] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_word::w#1 print_char_cursor#166 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 print_char_cursor#166 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [232] (word) print_word::w#2 ← (word) test_16u::divisor#0 [ print_line_cursor#1 print_char_cursor#128 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ) always clobbers reg byte a -Statement [236] (word) print_word::w#3 ← (word) test_16u::res#0 [ print_line_cursor#1 print_char_cursor#128 print_word::w#3 rem16u#1 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#3 rem16u#1 test_16u::i#10 ] ) always clobbers reg byte a -Statement [240] (word) print_word::w#4 ← (word) rem16u#1 [ print_line_cursor#1 print_char_cursor#128 print_word::w#4 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#4 test_16u::i#10 ] ) always clobbers reg byte a -Statement [247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 div16u::divisor#0 ] ) always clobbers reg byte a -Statement [248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 [ divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a -Statement [250] (word) divr16u::return#2 ← (word) divr16u::return#0 [ rem16u#1 divr16u::return#2 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 divr16u::return#2 ] ) always clobbers reg byte a -Statement [251] (word) div16u::return#0 ← (word) divr16u::return#2 [ rem16u#1 div16u::return#0 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 div16u::return#0 ] ) always clobbers reg byte a -Statement [281] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ( main:2::test_8u:7 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ) always clobbers reg byte a -Statement [284] *((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 [286] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10) [ test_16s::i#10 test_16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [18] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::i#10) [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [19] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [20] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [22] (signed word) div16s::return#2 ← (signed word) div16s::return#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [23] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [24] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [25] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#159 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#159 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [29] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#128 ] ) always clobbers reg byte a -Statement [33] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#128 ] ) always clobbers reg byte a -Statement [37] (signed word) print_sword::w#4 ← (signed word) rem16s#11 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#128 ] ) always clobbers reg byte a -Statement [46] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::test_16s:13::print_ln:40 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8s:11::print_ln:156 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_16u:9::print_ln:243 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8u:7::print_ln:277 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [47] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::test_16s:13::print_ln:40 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8s:11::print_ln:156 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_16u:9::print_ln:243 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8u:7::print_ln:277 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [50] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_sword::w#5 print_char_cursor#131 ] ( main:2::test_16s:13::print_sword:26 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:30 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:34 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:38 [ test_16s::i#10 print_line_cursor#1 print_sword::w#5 print_char_cursor#131 ] ) always clobbers reg byte a -Statement [53] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 [ print_char_cursor#18 print_sword::w#0 ] ( main:2::test_16s:13::print_sword:26 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:30 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:34 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:38 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] ) always clobbers reg byte a -Statement [55] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 [ print_char_cursor#130 print_word::w#7 ] ( main:2::test_16s:13::print_sword:26 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:30 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:34 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:38 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#130 print_word::w#7 ] ) always clobbers reg byte a -Statement [59] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#135 print_byte::b#1 ] ( main:2::test_16s:13::print_sword:26::print_word:56 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:30::print_word:56 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:34::print_word:56 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:38::print_word:56 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:229 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:233 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:237 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:241 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] ) always clobbers reg byte a -Statement [61] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::test_16s:13::print_sword:26::print_word:56 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:30::print_word:56 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:34::print_word:56 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:38::print_word:56 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:229 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:233 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:237 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:241 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a -Statement [65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#7 print_char_cursor#136 print_byte::$0 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:229::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:233::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:237::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:241::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:229::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:233::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:237::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:241::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:142::print_byte:166 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:146::print_byte:166 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:150::print_byte:166 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:154::print_byte:166 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:263 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:267 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:271 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:275 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] ) always clobbers reg byte a -Statement [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) $f [ print_char_cursor#18 print_byte::$2 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:229::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:233::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:237::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:241::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:229::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:233::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:237::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:241::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:142::print_byte:166 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:146::print_byte:166 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:150::print_byte:166 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:154::print_byte:166 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:263 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:267 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:271 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:275 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a -Statement [73] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 [ print_char_cursor#82 ] ( main:2::test_16s:13::print_sword:26::print_char:52 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_char:52 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_char:52 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_char:52 [ test_16s::i#10 print_line_cursor#1 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60::print_char:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60::print_char:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60::print_char:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60::print_char:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:229::print_byte:60::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:60::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:60::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:60::print_char:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62::print_char:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62::print_char:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62::print_char:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62::print_char:67 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:229::print_byte:62::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:62::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:62::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:62::print_char:67 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:142::print_byte:166::print_char:67 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:146::print_byte:166::print_char:67 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:150::print_byte:166::print_char:67 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:154::print_byte:166::print_char:67 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:263::print_char:67 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:267::print_char:67 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:271::print_char:67 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:275::print_char:67 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60::print_char:70 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60::print_char:70 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60::print_char:70 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60::print_char:70 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:229::print_byte:60::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:60::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:60::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:60::print_char:70 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62::print_char:70 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62::print_char:70 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62::print_char:70 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62::print_char:70 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#82 ] main:2::test_16u:9::print_word:229::print_byte:62::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:62::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:62::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:62::print_char:70 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:142::print_byte:166::print_char:70 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:146::print_byte:166::print_char:70 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:150::print_byte:166::print_char:70 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:154::print_byte:166::print_char:70 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#82 ] main:2::test_8u:7::print_byte:263::print_char:70 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#82 ] main:2::test_8u:7::print_byte:267::print_char:70 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#82 ] main:2::test_8u:7::print_byte:271::print_char:70 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#82 ] main:2::test_8u:7::print_byte:275::print_char:70 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:142::print_char:163 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:146::print_char:163 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:150::print_char:163 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:154::print_char:163 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:142::print_char:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:146::print_char:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:150::print_char:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:154::print_char:169 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#82 ] ) always clobbers reg byte y -Statement [78] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 [ print_char_cursor#128 print_str::str#13 ] ( main:2::test_16s:13::print_str:28 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:32 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:36 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:144 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:148 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:152 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:231 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:235 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:239 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:273 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#128 print_str::str#13 ] ) always clobbers reg byte a reg byte y -Statement [80] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) [ print_char_cursor#128 print_str::str#13 ] ( main:2::test_16s:13::print_str:28 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:32 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:36 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:144 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:148 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:152 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:231 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:235 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:239 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:273 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#128 print_str::str#13 ] ) always clobbers reg byte a reg byte y -Statement [83] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 [ div16s::divisor#0 divr16s::dividend#0 ] ( main:2::test_16s:13::div16s:21 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::divisor#0 divr16s::dividend#0 ] ) always clobbers reg byte a -Statement [84] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:21 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [86] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ rem16s#11 divr16s::return#3 ] ( main:2::test_16s:13::div16s:21 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#11 divr16s::return#3 ] ) always clobbers reg byte a -Statement [87] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 [ div16s::return#0 rem16s#11 ] ( main:2::test_16s:13::div16s:21 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::return#0 rem16s#11 ] ) always clobbers reg byte a -Statement [89] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [90] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#8 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#8 ] ) always clobbers reg byte a -Statement [92] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ) always clobbers reg byte a -Statement [93] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a -Statement [95] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ) always clobbers reg byte a -Statement [96] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ) always clobbers reg byte a -Statement [97] (word) divr16u::rem#4 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [99] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#3 rem16u#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#3 rem16u#1 ] ) always clobbers reg byte a -Statement [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 [ divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ) always clobbers reg byte a -Statement [102] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 [ divr16s::resultu#0 rem16s#2 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 rem16s#2 ] ) always clobbers reg byte a -Statement [103] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ rem16s#2 divr16s::return#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#2 divr16s::return#1 ] ) always clobbers reg byte a -Statement [106] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ rem16u#1 divr16s::return#7 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16u#1 divr16s::return#7 ] ) always clobbers reg byte a -Statement [107] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 [ divr16s::return#7 rem16s#37 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::return#7 rem16s#37 ] ) always clobbers reg byte a -Statement [108] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$13 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$13 ] ) always clobbers reg byte a -Statement [109] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$13 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$13 ] ) always clobbers reg byte a -Statement [110] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a -Statement [111] (signed word~) divr16s::$8 ← - (signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::$8 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::$8 ] ) always clobbers reg byte a -Statement [112] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$8 [ divr16s::divisor#0 divr16s::dividendu#7 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#7 ] ) always clobbers reg byte a -Statement [116] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [119] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [129] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#0 rem16u#1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [141] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#184 rem8s#3 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#184 rem8s#3 ] ) always clobbers reg byte a -Statement [170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::test_8s:11::print_sbyte:142 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:146 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:150 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:154 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 [ div8s::resultu#0 rem8s#2 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::resultu#0 rem8s#2 ] ) always clobbers reg byte a -Statement [184] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 [ rem8s#2 div8s::return#1 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 rem8s#2 div8s::return#1 ] ) always clobbers reg byte a -Statement [189] (signed byte~) div8s::$8 ← - (signed byte) div8s::divisor#0 [ div8s::neg#3 div8s::dividendu#3 div8s::$8 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#3 div8s::dividendu#3 div8s::$8 ] ) always clobbers reg byte a -Statement [190] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8s::dividendu#3 div8s::neg#2 div8s::$8 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::dividendu#3 div8s::neg#2 div8s::$8 ] ) always clobbers reg byte a -Statement [192] (signed byte~) div8s::$5 ← - (signed byte) div8s::dividend#0 [ div8s::divisor#0 div8s::$5 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::divisor#0 div8s::$5 ] ) always clobbers reg byte a -Statement [204] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) $80 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ( main:2::test_8s:11::div8s:137::div8u:179::divr8u:197 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] main:2::test_8u:7::div8u:259::divr8u:197 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:121 [ test_8u::dividend#0 ] +Statement [214] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 [ divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ( main:2::test_8s:11::div8s:139::div8u:181::divr8u:199 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] main:2::test_8u:7::div8u:263::divr8u:199 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ) always clobbers reg byte a +Statement [222] (byte) test_16u::$10 ← (byte) test_16u::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ print_line_cursor#1 test_16u::i#10 test_16u::$10 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$10 ] ) always clobbers reg byte a +Statement [223] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::$10) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 ] ) always clobbers reg byte a +Statement [224] (byte) test_16u::$11 ← (byte) test_16u::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::$11 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::$11 ] ) always clobbers reg byte a +Statement [225] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ) always clobbers reg byte a +Statement [226] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ) always clobbers reg byte a +Statement [227] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ) always clobbers reg byte a +Statement [229] (word) div16u::return#2 ← (word) div16u::return#0 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ) always clobbers reg byte a +Statement [230] (word) test_16u::res#0 ← (word) div16u::return#2 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a +Statement [231] (word) print_word::w#1 ← (word) test_16u::dividend#0 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a +Statement [232] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_word::w#1 print_char_cursor#166 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 print_char_cursor#166 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a +Statement [236] (word) print_word::w#2 ← (word) test_16u::divisor#0 [ print_line_cursor#1 print_char_cursor#128 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ) always clobbers reg byte a +Statement [240] (word) print_word::w#3 ← (word) test_16u::res#0 [ print_line_cursor#1 print_char_cursor#128 print_word::w#3 rem16u#1 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#3 rem16u#1 test_16u::i#10 ] ) always clobbers reg byte a +Statement [244] (word) print_word::w#4 ← (word) rem16u#1 [ print_line_cursor#1 print_char_cursor#128 print_word::w#4 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#4 test_16u::i#10 ] ) always clobbers reg byte a +Statement [251] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:228 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 div16u::divisor#0 ] ) always clobbers reg byte a +Statement [252] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 [ divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::test_16u:9::div16u:228 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a +Statement [254] (word) divr16u::return#2 ← (word) divr16u::return#0 [ rem16u#1 divr16u::return#2 ] ( main:2::test_16u:9::div16u:228 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 divr16u::return#2 ] ) always clobbers reg byte a +Statement [255] (word) div16u::return#0 ← (word) divr16u::return#2 [ rem16u#1 div16u::return#0 ] ( main:2::test_16u:9::div16u:228 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 div16u::return#0 ] ) always clobbers reg byte a +Statement [285] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ( main:2::test_8u:7 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ) always clobbers reg byte a +Statement [288] *((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 [290] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [17] (byte) test_16s::$16 ← (byte) test_16s::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ test_16s::i#10 test_16s::$16 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::$16 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [18] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::$16) [ test_16s::i#10 test_16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [19] (byte) test_16s::$17 ← (byte) test_16s::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ test_16s::i#10 test_16s::dividend#0 test_16s::$17 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::$17 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [20] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::$17) [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [21] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [22] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [24] (signed word) div16s::return#2 ← (signed word) div16s::return#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a +Statement [25] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a +Statement [26] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a +Statement [27] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#159 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#159 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a +Statement [31] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#128 ] ) always clobbers reg byte a +Statement [35] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#128 ] ) always clobbers reg byte a +Statement [39] (signed word) print_sword::w#4 ← (signed word) rem16s#11 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#128 ] ) always clobbers reg byte a +Statement [48] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::test_16s:13::print_ln:42 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8s:11::print_ln:158 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_16u:9::print_ln:247 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8u:7::print_ln:281 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a +Statement [49] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::test_16s:13::print_ln:42 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8s:11::print_ln:158 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_16u:9::print_ln:247 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8u:7::print_ln:281 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a +Statement [52] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_sword::w#5 print_char_cursor#131 ] ( main:2::test_16s:13::print_sword:28 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:32 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:36 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:40 [ test_16s::i#10 print_line_cursor#1 print_sword::w#5 print_char_cursor#131 ] ) always clobbers reg byte a +Statement [55] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 [ print_char_cursor#18 print_sword::w#0 ] ( main:2::test_16s:13::print_sword:28 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:32 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:36 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:40 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] ) always clobbers reg byte a +Statement [57] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 [ print_char_cursor#130 print_word::w#7 ] ( main:2::test_16s:13::print_sword:28 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:32 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:36 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:40 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#130 print_word::w#7 ] ) always clobbers reg byte a +Statement [61] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#135 print_byte::b#1 ] ( main:2::test_16s:13::print_sword:28::print_word:58 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:32::print_word:58 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:36::print_word:58 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:40::print_word:58 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:233 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:237 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:241 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:245 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] ) always clobbers reg byte a +Statement [63] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::test_16s:13::print_sword:28::print_word:58 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:32::print_word:58 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:36::print_word:58 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:40::print_word:58 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:233 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:237 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:241 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:245 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a +Statement [67] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#7 print_char_cursor#136 print_byte::$0 ] ( main:2::test_16s:13::print_sword:28::print_word:58::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:233::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:237::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:241::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:245::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:28::print_word:58::print_byte:64 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:64 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:64 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:64 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:233::print_byte:64 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:237::print_byte:64 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:241::print_byte:64 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:245::print_byte:64 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:144::print_byte:168 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:148::print_byte:168 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:152::print_byte:168 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:156::print_byte:168 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:267 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:271 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:275 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:279 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] ) always clobbers reg byte a +Statement [70] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) $f [ print_char_cursor#18 print_byte::$2 ] ( main:2::test_16s:13::print_sword:28::print_word:58::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:233::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:237::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:241::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:245::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:28::print_word:58::print_byte:64 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:64 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:64 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:64 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:233::print_byte:64 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:237::print_byte:64 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:241::print_byte:64 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:245::print_byte:64 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:144::print_byte:168 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:148::print_byte:168 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:152::print_byte:168 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:156::print_byte:168 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:267 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:271 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:275 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:279 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a +Statement [75] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 [ print_char_cursor#82 ] ( main:2::test_16s:13::print_sword:28::print_char:54 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:32::print_char:54 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:36::print_char:54 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:40::print_char:54 [ test_16s::i#10 print_line_cursor#1 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:28::print_word:58::print_byte:62::print_char:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:62::print_char:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:62::print_char:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:62::print_char:69 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:62::print_char:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:62::print_char:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:62::print_char:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:245::print_byte:62::print_char:69 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:28::print_word:58::print_byte:64::print_char:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:64::print_char:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:64::print_char:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:64::print_char:69 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:64::print_char:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:64::print_char:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:64::print_char:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:245::print_byte:64::print_char:69 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:144::print_byte:168::print_char:69 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:148::print_byte:168::print_char:69 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:152::print_byte:168::print_char:69 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:156::print_byte:168::print_char:69 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:267::print_char:69 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:271::print_char:69 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:275::print_char:69 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:279::print_char:69 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:28::print_word:58::print_byte:62::print_char:72 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:62::print_char:72 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:62::print_char:72 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:62::print_char:72 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:62::print_char:72 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:62::print_char:72 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:62::print_char:72 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:245::print_byte:62::print_char:72 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:28::print_word:58::print_byte:64::print_char:72 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:64::print_char:72 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:64::print_char:72 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:64::print_char:72 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:64::print_char:72 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:64::print_char:72 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:64::print_char:72 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#82 ] main:2::test_16u:9::print_word:245::print_byte:64::print_char:72 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:144::print_byte:168::print_char:72 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:148::print_byte:168::print_char:72 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:152::print_byte:168::print_char:72 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:156::print_byte:168::print_char:72 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#82 ] main:2::test_8u:7::print_byte:267::print_char:72 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#82 ] main:2::test_8u:7::print_byte:271::print_char:72 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#82 ] main:2::test_8u:7::print_byte:275::print_char:72 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#82 ] main:2::test_8u:7::print_byte:279::print_char:72 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:144::print_char:165 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:148::print_char:165 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:152::print_char:165 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:156::print_char:165 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:144::print_char:171 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:148::print_char:171 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:152::print_char:171 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:156::print_char:171 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#82 ] ) always clobbers reg byte y +Statement [80] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 [ print_char_cursor#128 print_str::str#13 ] ( main:2::test_16s:13::print_str:30 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:34 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:38 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:146 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:150 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:154 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:235 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:239 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:243 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:273 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:277 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#128 print_str::str#13 ] ) always clobbers reg byte a reg byte y +Statement [82] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) [ print_char_cursor#128 print_str::str#13 ] ( main:2::test_16s:13::print_str:30 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:34 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:38 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:146 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:150 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:154 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:235 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:239 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:243 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:273 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:277 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#128 print_str::str#13 ] ) always clobbers reg byte a reg byte y +Statement [85] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 [ div16s::divisor#0 divr16s::dividend#0 ] ( main:2::test_16s:13::div16s:23 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::divisor#0 divr16s::dividend#0 ] ) always clobbers reg byte a +Statement [86] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:23 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a +Statement [88] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ rem16s#11 divr16s::return#3 ] ( main:2::test_16s:13::div16s:23 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#11 divr16s::return#3 ] ) always clobbers reg byte a +Statement [89] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 [ div16s::return#0 rem16s#11 ] ( main:2::test_16s:13::div16s:23 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::return#0 rem16s#11 ] ) always clobbers reg byte a +Statement [91] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a +Statement [92] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#8 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#8 ] ) always clobbers reg byte a +Statement [94] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ) always clobbers reg byte a +Statement [95] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a +Statement [97] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ) always clobbers reg byte a +Statement [98] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ) always clobbers reg byte a +Statement [99] (word) divr16u::rem#4 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] ) always clobbers reg byte a +Statement [101] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#3 rem16u#1 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#3 rem16u#1 ] ) always clobbers reg byte a +Statement [102] (word) divr16s::resultu#0 ← (word) divr16u::return#3 [ divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ) always clobbers reg byte a +Statement [104] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 [ divr16s::resultu#0 rem16s#2 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 rem16s#2 ] ) always clobbers reg byte a +Statement [105] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ rem16s#2 divr16s::return#1 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#2 divr16s::return#1 ] ) always clobbers reg byte a +Statement [108] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ rem16u#1 divr16s::return#7 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16u#1 divr16s::return#7 ] ) always clobbers reg byte a +Statement [109] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 [ divr16s::return#7 rem16s#37 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::return#7 rem16s#37 ] ) always clobbers reg byte a +Statement [110] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$13 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$13 ] ) always clobbers reg byte a +Statement [111] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$13 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$13 ] ) always clobbers reg byte a +Statement [112] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a +Statement [113] (signed word~) divr16s::$8 ← - (signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::$8 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::$8 ] ) always clobbers reg byte a +Statement [114] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$8 [ divr16s::divisor#0 divr16s::dividendu#7 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#7 ] ) always clobbers reg byte a +Statement [118] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::test_16s:13::div16s:23::divr16s:87::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::test_16u:9::div16u:228::divr16u:253 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [121] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::test_16s:13::div16s:23::divr16s:87::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::test_16u:9::div16u:228::divr16u:253 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [125] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::test_16s:13::div16s:23::divr16s:87::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::test_16u:9::div16u:228::divr16u:253 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [127] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::test_16s:13::div16s:23::divr16s:87::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::test_16u:9::div16u:228::divr16u:253 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [131] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::test_16s:13::div16s:23::divr16s:87::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#0 rem16u#1 ] main:2::test_16u:9::div16u:228::divr16u:253 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [143] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#184 rem8s#3 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#184 rem8s#3 ] ) always clobbers reg byte a +Statement [172] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::test_8s:11::print_sbyte:144 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:148 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:152 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:156 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a +Statement [185] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 [ div8s::resultu#0 rem8s#2 ] ( main:2::test_8s:11::div8s:139 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::resultu#0 rem8s#2 ] ) always clobbers reg byte a +Statement [186] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 [ rem8s#2 div8s::return#1 ] ( main:2::test_8s:11::div8s:139 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 rem8s#2 div8s::return#1 ] ) always clobbers reg byte a +Statement [191] (signed byte~) div8s::$8 ← - (signed byte) div8s::divisor#0 [ div8s::neg#3 div8s::dividendu#3 div8s::$8 ] ( main:2::test_8s:11::div8s:139 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#3 div8s::dividendu#3 div8s::$8 ] ) always clobbers reg byte a +Statement [192] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8s::dividendu#3 div8s::neg#2 div8s::$8 ] ( main:2::test_8s:11::div8s:139 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::dividendu#3 div8s::neg#2 div8s::$8 ] ) always clobbers reg byte a +Statement [194] (signed byte~) div8s::$5 ← - (signed byte) div8s::dividend#0 [ div8s::divisor#0 div8s::$5 ] ( main:2::test_8s:11::div8s:139 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::divisor#0 div8s::$5 ] ) always clobbers reg byte a +Statement [206] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) $80 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ( main:2::test_8s:11::div8s:139::div8u:181::divr8u:199 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] main:2::test_8u:7::div8u:263::divr8u:199 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:44 [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ] -Statement [206] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ( main:2::test_8s:11::div8s:137::div8u:179::divr8u:197 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] main:2::test_8u:7::div8u:259::divr8u:197 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ) always clobbers reg byte a -Statement [212] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 [ divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ( main:2::test_8s:11::div8s:137::div8u:179::divr8u:197 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] main:2::test_8u:7::div8u:259::divr8u:197 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ) always clobbers reg byte a -Statement [220] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 ] ) always clobbers reg byte a -Statement [221] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ) always clobbers reg byte a -Statement [222] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ) always clobbers reg byte a -Statement [223] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ) always clobbers reg byte a -Statement [225] (word) div16u::return#2 ← (word) div16u::return#0 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ) always clobbers reg byte a -Statement [226] (word) test_16u::res#0 ← (word) div16u::return#2 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [227] (word) print_word::w#1 ← (word) test_16u::dividend#0 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [228] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_word::w#1 print_char_cursor#166 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 print_char_cursor#166 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [232] (word) print_word::w#2 ← (word) test_16u::divisor#0 [ print_line_cursor#1 print_char_cursor#128 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ) always clobbers reg byte a -Statement [236] (word) print_word::w#3 ← (word) test_16u::res#0 [ print_line_cursor#1 print_char_cursor#128 print_word::w#3 rem16u#1 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#3 rem16u#1 test_16u::i#10 ] ) always clobbers reg byte a -Statement [240] (word) print_word::w#4 ← (word) rem16u#1 [ print_line_cursor#1 print_char_cursor#128 print_word::w#4 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#4 test_16u::i#10 ] ) always clobbers reg byte a -Statement [247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 div16u::divisor#0 ] ) always clobbers reg byte a -Statement [248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 [ divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a -Statement [250] (word) divr16u::return#2 ← (word) divr16u::return#0 [ rem16u#1 divr16u::return#2 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 divr16u::return#2 ] ) always clobbers reg byte a -Statement [251] (word) div16u::return#0 ← (word) divr16u::return#2 [ rem16u#1 div16u::return#0 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 div16u::return#0 ] ) always clobbers reg byte a -Statement [281] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ( main:2::test_8u:7 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ) always clobbers reg byte a -Statement [284] *((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 [286] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10) [ test_16s::i#10 test_16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [18] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::i#10) [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [19] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [20] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [22] (signed word) div16s::return#2 ← (signed word) div16s::return#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [23] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [24] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [25] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#159 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#159 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a -Statement [29] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#128 ] ) always clobbers reg byte a -Statement [33] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#128 ] ) always clobbers reg byte a -Statement [37] (signed word) print_sword::w#4 ← (signed word) rem16s#11 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#128 ] ) always clobbers reg byte a -Statement [46] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::test_16s:13::print_ln:40 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8s:11::print_ln:156 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_16u:9::print_ln:243 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8u:7::print_ln:277 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [47] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::test_16s:13::print_ln:40 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8s:11::print_ln:156 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_16u:9::print_ln:243 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8u:7::print_ln:277 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a -Statement [50] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_sword::w#5 print_char_cursor#131 ] ( main:2::test_16s:13::print_sword:26 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:30 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:34 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:38 [ test_16s::i#10 print_line_cursor#1 print_sword::w#5 print_char_cursor#131 ] ) always clobbers reg byte a -Statement [53] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 [ print_char_cursor#18 print_sword::w#0 ] ( main:2::test_16s:13::print_sword:26 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:30 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:34 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:38 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] ) always clobbers reg byte a -Statement [55] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 [ print_char_cursor#130 print_word::w#7 ] ( main:2::test_16s:13::print_sword:26 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:30 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:34 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:38 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#130 print_word::w#7 ] ) always clobbers reg byte a -Statement [59] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#135 print_byte::b#1 ] ( main:2::test_16s:13::print_sword:26::print_word:56 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:30::print_word:56 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:34::print_word:56 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:38::print_word:56 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:229 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:233 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:237 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:241 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] ) always clobbers reg byte a -Statement [61] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::test_16s:13::print_sword:26::print_word:56 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:30::print_word:56 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:34::print_word:56 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:38::print_word:56 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:229 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:233 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:237 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:241 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a -Statement [65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#7 print_char_cursor#136 print_byte::$0 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:229::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:233::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:237::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:241::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:229::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:233::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:237::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:241::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:142::print_byte:166 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:146::print_byte:166 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:150::print_byte:166 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:154::print_byte:166 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:263 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:267 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:271 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:275 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] ) always clobbers reg byte a -Statement [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) $f [ print_char_cursor#18 print_byte::$2 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:229::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:233::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:237::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:241::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:229::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:233::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:237::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:241::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:142::print_byte:166 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:146::print_byte:166 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:150::print_byte:166 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:154::print_byte:166 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:263 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:267 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:271 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:275 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a -Statement [73] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 [ print_char_cursor#82 ] ( main:2::test_16s:13::print_sword:26::print_char:52 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_char:52 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_char:52 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_char:52 [ test_16s::i#10 print_line_cursor#1 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60::print_char:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60::print_char:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60::print_char:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60::print_char:67 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:229::print_byte:60::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:60::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:60::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:60::print_char:67 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62::print_char:67 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62::print_char:67 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62::print_char:67 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62::print_char:67 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:229::print_byte:62::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:62::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:62::print_char:67 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:62::print_char:67 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:142::print_byte:166::print_char:67 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:146::print_byte:166::print_char:67 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:150::print_byte:166::print_char:67 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:154::print_byte:166::print_char:67 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:263::print_char:67 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:267::print_char:67 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:271::print_char:67 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:275::print_char:67 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60::print_char:70 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60::print_char:70 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60::print_char:70 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60::print_char:70 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:229::print_byte:60::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:60::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:60::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:60::print_char:70 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62::print_char:70 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62::print_char:70 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62::print_char:70 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62::print_char:70 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#82 ] main:2::test_16u:9::print_word:229::print_byte:62::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:62::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:62::print_char:70 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:62::print_char:70 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:142::print_byte:166::print_char:70 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:146::print_byte:166::print_char:70 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:150::print_byte:166::print_char:70 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:154::print_byte:166::print_char:70 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#82 ] main:2::test_8u:7::print_byte:263::print_char:70 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#82 ] main:2::test_8u:7::print_byte:267::print_char:70 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#82 ] main:2::test_8u:7::print_byte:271::print_char:70 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#82 ] main:2::test_8u:7::print_byte:275::print_char:70 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:142::print_char:163 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:146::print_char:163 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:150::print_char:163 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:154::print_char:163 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:142::print_char:169 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:146::print_char:169 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:150::print_char:169 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:154::print_char:169 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#82 ] ) always clobbers reg byte y -Statement [78] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 [ print_char_cursor#128 print_str::str#13 ] ( main:2::test_16s:13::print_str:28 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:32 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:36 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:144 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:148 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:152 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:231 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:235 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:239 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:273 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#128 print_str::str#13 ] ) always clobbers reg byte a reg byte y -Statement [80] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) [ print_char_cursor#128 print_str::str#13 ] ( main:2::test_16s:13::print_str:28 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:32 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:36 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:144 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:148 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:152 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:231 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:235 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:239 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:273 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#128 print_str::str#13 ] ) always clobbers reg byte a reg byte y -Statement [83] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 [ div16s::divisor#0 divr16s::dividend#0 ] ( main:2::test_16s:13::div16s:21 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::divisor#0 divr16s::dividend#0 ] ) always clobbers reg byte a -Statement [84] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:21 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [86] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ rem16s#11 divr16s::return#3 ] ( main:2::test_16s:13::div16s:21 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#11 divr16s::return#3 ] ) always clobbers reg byte a -Statement [87] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 [ div16s::return#0 rem16s#11 ] ( main:2::test_16s:13::div16s:21 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::return#0 rem16s#11 ] ) always clobbers reg byte a -Statement [89] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [90] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#8 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#8 ] ) always clobbers reg byte a -Statement [92] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ) always clobbers reg byte a -Statement [93] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a -Statement [95] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ) always clobbers reg byte a -Statement [96] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ) always clobbers reg byte a -Statement [97] (word) divr16u::rem#4 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [99] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#3 rem16u#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#3 rem16u#1 ] ) always clobbers reg byte a -Statement [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 [ divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ) always clobbers reg byte a -Statement [102] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 [ divr16s::resultu#0 rem16s#2 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 rem16s#2 ] ) always clobbers reg byte a -Statement [103] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ rem16s#2 divr16s::return#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#2 divr16s::return#1 ] ) always clobbers reg byte a -Statement [106] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ rem16u#1 divr16s::return#7 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16u#1 divr16s::return#7 ] ) always clobbers reg byte a -Statement [107] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 [ divr16s::return#7 rem16s#37 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::return#7 rem16s#37 ] ) always clobbers reg byte a -Statement [108] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$13 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$13 ] ) always clobbers reg byte a -Statement [109] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$13 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$13 ] ) always clobbers reg byte a -Statement [110] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a -Statement [111] (signed word~) divr16s::$8 ← - (signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::$8 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::$8 ] ) always clobbers reg byte a -Statement [112] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$8 [ divr16s::divisor#0 divr16s::dividendu#7 ] ( main:2::test_16s:13::div16s:21::divr16s:85 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#7 ] ) always clobbers reg byte a -Statement [116] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [119] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [129] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::test_16s:13::div16s:21::divr16s:85::divr16u:98 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#0 rem16u#1 ] main:2::test_16u:9::div16u:224::divr16u:249 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [141] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#184 rem8s#3 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#184 rem8s#3 ] ) always clobbers reg byte a -Statement [170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::test_8s:11::print_sbyte:142 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:146 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:150 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:154 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a -Statement [183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 [ div8s::resultu#0 rem8s#2 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::resultu#0 rem8s#2 ] ) always clobbers reg byte a -Statement [184] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 [ rem8s#2 div8s::return#1 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 rem8s#2 div8s::return#1 ] ) always clobbers reg byte a -Statement [189] (signed byte~) div8s::$8 ← - (signed byte) div8s::divisor#0 [ div8s::neg#3 div8s::dividendu#3 div8s::$8 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#3 div8s::dividendu#3 div8s::$8 ] ) always clobbers reg byte a -Statement [190] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8s::dividendu#3 div8s::neg#2 div8s::$8 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::dividendu#3 div8s::neg#2 div8s::$8 ] ) always clobbers reg byte a -Statement [192] (signed byte~) div8s::$5 ← - (signed byte) div8s::dividend#0 [ div8s::divisor#0 div8s::$5 ] ( main:2::test_8s:11::div8s:137 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::divisor#0 div8s::$5 ] ) always clobbers reg byte a -Statement [204] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) $80 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ( main:2::test_8s:11::div8s:137::div8u:179::divr8u:197 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] main:2::test_8u:7::div8u:259::divr8u:197 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ) always clobbers reg byte a -Statement [206] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ( main:2::test_8s:11::div8s:137::div8u:179::divr8u:197 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] main:2::test_8u:7::div8u:259::divr8u:197 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ) always clobbers reg byte a -Statement [212] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 [ divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ( main:2::test_8s:11::div8s:137::div8u:179::divr8u:197 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] main:2::test_8u:7::div8u:259::divr8u:197 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ) always clobbers reg byte a -Statement [220] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 ] ) always clobbers reg byte a -Statement [221] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ) always clobbers reg byte a -Statement [222] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ) always clobbers reg byte a -Statement [223] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ) always clobbers reg byte a -Statement [225] (word) div16u::return#2 ← (word) div16u::return#0 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ) always clobbers reg byte a -Statement [226] (word) test_16u::res#0 ← (word) div16u::return#2 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [227] (word) print_word::w#1 ← (word) test_16u::dividend#0 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [228] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_word::w#1 print_char_cursor#166 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 print_char_cursor#166 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a -Statement [232] (word) print_word::w#2 ← (word) test_16u::divisor#0 [ print_line_cursor#1 print_char_cursor#128 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ) always clobbers reg byte a -Statement [236] (word) print_word::w#3 ← (word) test_16u::res#0 [ print_line_cursor#1 print_char_cursor#128 print_word::w#3 rem16u#1 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#3 rem16u#1 test_16u::i#10 ] ) always clobbers reg byte a -Statement [240] (word) print_word::w#4 ← (word) rem16u#1 [ print_line_cursor#1 print_char_cursor#128 print_word::w#4 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#4 test_16u::i#10 ] ) always clobbers reg byte a -Statement [247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 div16u::divisor#0 ] ) always clobbers reg byte a -Statement [248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 [ divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a -Statement [250] (word) divr16u::return#2 ← (word) divr16u::return#0 [ rem16u#1 divr16u::return#2 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 divr16u::return#2 ] ) always clobbers reg byte a -Statement [251] (word) div16u::return#0 ← (word) divr16u::return#2 [ rem16u#1 div16u::return#0 ] ( main:2::test_16u:9::div16u:224 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 div16u::return#0 ] ) always clobbers reg byte a -Statement [281] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ( main:2::test_8u:7 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ) always clobbers reg byte a -Statement [284] *((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 [286] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [208] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ( main:2::test_8s:11::div8s:139::div8u:181::divr8u:199 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] main:2::test_8u:7::div8u:263::divr8u:199 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ) always clobbers reg byte a +Statement [214] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 [ divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ( main:2::test_8s:11::div8s:139::div8u:181::divr8u:199 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] main:2::test_8u:7::div8u:263::divr8u:199 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ) always clobbers reg byte a +Statement [222] (byte) test_16u::$10 ← (byte) test_16u::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ print_line_cursor#1 test_16u::i#10 test_16u::$10 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$10 ] ) always clobbers reg byte a +Statement [223] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::$10) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 ] ) always clobbers reg byte a +Statement [224] (byte) test_16u::$11 ← (byte) test_16u::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::$11 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::$11 ] ) always clobbers reg byte a +Statement [225] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ) always clobbers reg byte a +Statement [226] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ) always clobbers reg byte a +Statement [227] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ) always clobbers reg byte a +Statement [229] (word) div16u::return#2 ← (word) div16u::return#0 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ) always clobbers reg byte a +Statement [230] (word) test_16u::res#0 ← (word) div16u::return#2 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a +Statement [231] (word) print_word::w#1 ← (word) test_16u::dividend#0 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a +Statement [232] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_word::w#1 print_char_cursor#166 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 print_char_cursor#166 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a +Statement [236] (word) print_word::w#2 ← (word) test_16u::divisor#0 [ print_line_cursor#1 print_char_cursor#128 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ) always clobbers reg byte a +Statement [240] (word) print_word::w#3 ← (word) test_16u::res#0 [ print_line_cursor#1 print_char_cursor#128 print_word::w#3 rem16u#1 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#3 rem16u#1 test_16u::i#10 ] ) always clobbers reg byte a +Statement [244] (word) print_word::w#4 ← (word) rem16u#1 [ print_line_cursor#1 print_char_cursor#128 print_word::w#4 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#4 test_16u::i#10 ] ) always clobbers reg byte a +Statement [251] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:228 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 div16u::divisor#0 ] ) always clobbers reg byte a +Statement [252] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 [ divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::test_16u:9::div16u:228 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a +Statement [254] (word) divr16u::return#2 ← (word) divr16u::return#0 [ rem16u#1 divr16u::return#2 ] ( main:2::test_16u:9::div16u:228 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 divr16u::return#2 ] ) always clobbers reg byte a +Statement [255] (word) div16u::return#0 ← (word) divr16u::return#2 [ rem16u#1 div16u::return#0 ] ( main:2::test_16u:9::div16u:228 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 div16u::return#0 ] ) always clobbers reg byte a +Statement [285] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ( main:2::test_8u:7 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ) always clobbers reg byte a +Statement [288] *((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 [290] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [17] (byte) test_16s::$16 ← (byte) test_16s::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ test_16s::i#10 test_16s::$16 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::$16 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [18] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::$16) [ test_16s::i#10 test_16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [19] (byte) test_16s::$17 ← (byte) test_16s::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ test_16s::i#10 test_16s::dividend#0 test_16s::$17 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::$17 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [20] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::$17) [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [21] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [22] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::dividend#0 div16s::divisor#0 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [24] (signed word) div16s::return#2 ← (signed word) div16s::return#0 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 div16s::return#2 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a +Statement [25] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a +Statement [26] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a +Statement [27] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#159 print_line_cursor#1 rem16s#11 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_sword::w#1 print_char_cursor#159 print_line_cursor#1 rem16s#11 ] ) always clobbers reg byte a +Statement [31] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 print_sword::w#2 rem16s#11 print_char_cursor#128 ] ) always clobbers reg byte a +Statement [35] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#3 rem16s#11 print_char_cursor#128 ] ) always clobbers reg byte a +Statement [39] (signed word) print_sword::w#4 ← (signed word) rem16s#11 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#128 ] ( main:2::test_16s:13 [ test_16s::i#10 print_line_cursor#1 print_sword::w#4 print_char_cursor#128 ] ) always clobbers reg byte a +Statement [48] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::test_16s:13::print_ln:42 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8s:11::print_ln:158 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_16u:9::print_ln:247 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8u:7::print_ln:281 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a +Statement [49] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#18 ] ( main:2::test_16s:13::print_ln:42 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8s:11::print_ln:158 [ test_8s::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_16u:9::print_ln:247 [ test_16u::i#10 print_line_cursor#1 print_char_cursor#18 ] main:2::test_8u:7::print_ln:281 [ test_8u::i#10 print_line_cursor#1 print_char_cursor#18 ] ) always clobbers reg byte a +Statement [52] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_sword::w#5 print_char_cursor#131 ] ( main:2::test_16s:13::print_sword:28 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:32 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:36 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#131 ] main:2::test_16s:13::print_sword:40 [ test_16s::i#10 print_line_cursor#1 print_sword::w#5 print_char_cursor#131 ] ) always clobbers reg byte a +Statement [55] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 [ print_char_cursor#18 print_sword::w#0 ] ( main:2::test_16s:13::print_sword:28 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:32 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:36 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_sword::w#0 ] main:2::test_16s:13::print_sword:40 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] ) always clobbers reg byte a +Statement [57] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 [ print_char_cursor#130 print_word::w#7 ] ( main:2::test_16s:13::print_sword:28 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:32 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:36 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#130 print_word::w#7 ] main:2::test_16s:13::print_sword:40 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#130 print_word::w#7 ] ) always clobbers reg byte a +Statement [61] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#135 print_byte::b#1 ] ( main:2::test_16s:13::print_sword:28::print_word:58 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:32::print_word:58 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:36::print_word:58 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16s:13::print_sword:40::print_word:58 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:233 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:237 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:241 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] main:2::test_16u:9::print_word:245 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#135 print_byte::b#1 ] ) always clobbers reg byte a +Statement [63] (byte) print_byte::b#2 ← < (word) print_word::w#5 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::test_16s:13::print_sword:28::print_word:58 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:32::print_word:58 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:36::print_word:58 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::b#2 ] main:2::test_16s:13::print_sword:40::print_word:58 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:233 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:237 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:241 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#18 print_byte::b#2 ] main:2::test_16u:9::print_word:245 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a +Statement [67] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#7 print_char_cursor#136 print_byte::$0 ] ( main:2::test_16s:13::print_sword:28::print_word:58::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:233::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:237::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:241::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:245::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:28::print_word:58::print_byte:64 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:64 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:64 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:64 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:233::print_byte:64 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:237::print_byte:64 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:241::print_byte:64 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_16u:9::print_word:245::print_byte:64 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:144::print_byte:168 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:148::print_byte:168 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:152::print_byte:168 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8s:11::print_sbyte:156::print_byte:168 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:267 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:271 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:275 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] main:2::test_8u:7::print_byte:279 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#136 print_byte::$0 ] ) always clobbers reg byte a +Statement [70] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) $f [ print_char_cursor#18 print_byte::$2 ] ( main:2::test_16s:13::print_sword:28::print_word:58::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:233::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:237::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:241::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:245::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:28::print_word:58::print_byte:64 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:64 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:64 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#18 print_byte::$2 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:64 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:233::print_byte:64 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:237::print_byte:64 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:241::print_byte:64 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_16u:9::print_word:245::print_byte:64 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:144::print_byte:168 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:148::print_byte:168 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:152::print_byte:168 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_byte::$2 ] main:2::test_8s:11::print_sbyte:156::print_byte:168 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:267 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:271 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:275 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#18 print_byte::$2 ] main:2::test_8u:7::print_byte:279 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a +Statement [75] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 [ print_char_cursor#82 ] ( main:2::test_16s:13::print_sword:28::print_char:54 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:32::print_char:54 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:36::print_char:54 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:40::print_char:54 [ test_16s::i#10 print_line_cursor#1 print_sword::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:28::print_word:58::print_byte:62::print_char:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:62::print_char:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:62::print_char:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:62::print_char:69 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:62::print_char:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:62::print_char:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:62::print_char:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:245::print_byte:62::print_char:69 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:28::print_word:58::print_byte:64::print_char:69 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:64::print_char:69 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:64::print_char:69 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:64::print_char:69 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:64::print_char:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:64::print_char:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:64::print_char:69 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_16u:9::print_word:245::print_byte:64::print_char:69 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:144::print_byte:168::print_char:69 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:148::print_byte:168::print_char:69 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:152::print_byte:168::print_char:69 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:156::print_byte:168::print_char:69 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:267::print_char:69 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:271::print_char:69 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:275::print_char:69 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_8u:7::print_byte:279::print_char:69 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#82 ] main:2::test_16s:13::print_sword:28::print_word:58::print_byte:62::print_char:72 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:62::print_char:72 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:62::print_char:72 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:62::print_char:72 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:62::print_char:72 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:62::print_char:72 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:62::print_char:72 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#82 ] main:2::test_16u:9::print_word:245::print_byte:62::print_char:72 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#82 ] main:2::test_16s:13::print_sword:28::print_word:58::print_byte:64::print_char:72 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:32::print_word:58::print_byte:64::print_char:72 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:36::print_word:58::print_byte:64::print_char:72 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#82 ] main:2::test_16s:13::print_sword:40::print_word:58::print_byte:64::print_char:72 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#82 ] main:2::test_16u:9::print_word:233::print_byte:64::print_char:72 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#82 ] main:2::test_16u:9::print_word:237::print_byte:64::print_char:72 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#82 ] main:2::test_16u:9::print_word:241::print_byte:64::print_char:72 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#82 ] main:2::test_16u:9::print_word:245::print_byte:64::print_char:72 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:144::print_byte:168::print_char:72 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:148::print_byte:168::print_char:72 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:152::print_byte:168::print_char:72 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:156::print_byte:168::print_char:72 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#82 ] main:2::test_8u:7::print_byte:267::print_char:72 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#82 ] main:2::test_8u:7::print_byte:271::print_char:72 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#82 ] main:2::test_8u:7::print_byte:275::print_char:72 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#82 ] main:2::test_8u:7::print_byte:279::print_char:72 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:144::print_char:165 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:148::print_char:165 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:152::print_char:165 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:156::print_char:165 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:144::print_char:171 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:148::print_char:171 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:152::print_char:171 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_sbyte::b#10 print_char_cursor#82 ] main:2::test_8s:11::print_sbyte:156::print_char:171 [ print_line_cursor#1 test_8s::i#10 print_sbyte::b#10 print_char_cursor#82 ] ) always clobbers reg byte y +Statement [80] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 [ print_char_cursor#128 print_str::str#13 ] ( main:2::test_16s:13::print_str:30 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:34 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:38 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:146 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:150 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:154 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:235 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:239 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:243 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:273 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:277 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#128 print_str::str#13 ] ) always clobbers reg byte a reg byte y +Statement [82] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) [ print_char_cursor#128 print_str::str#13 ] ( main:2::test_16s:13::print_str:30 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:34 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_16s:13::print_str:38 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:146 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:150 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_8s:11::print_str:154 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:235 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:239 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_16u:9::print_str:243 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:273 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#128 print_str::str#13 ] main:2::test_8u:7::print_str:277 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#128 print_str::str#13 ] ) always clobbers reg byte a reg byte y +Statement [85] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 [ div16s::divisor#0 divr16s::dividend#0 ] ( main:2::test_16s:13::div16s:23 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::divisor#0 divr16s::dividend#0 ] ) always clobbers reg byte a +Statement [86] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:23 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a +Statement [88] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ rem16s#11 divr16s::return#3 ] ( main:2::test_16s:13::div16s:23 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#11 divr16s::return#3 ] ) always clobbers reg byte a +Statement [89] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 [ div16s::return#0 rem16s#11 ] ( main:2::test_16s:13::div16s:23 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 div16s::return#0 rem16s#11 ] ) always clobbers reg byte a +Statement [91] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::dividend#0 divr16s::divisor#0 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividend#0 divr16s::divisor#0 ] ) always clobbers reg byte a +Statement [92] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::dividendu#8 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#8 ] ) always clobbers reg byte a +Statement [94] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ) always clobbers reg byte a +Statement [95] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a +Statement [97] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#2 ] ) always clobbers reg byte a +Statement [98] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 ] ) always clobbers reg byte a +Statement [99] (word) divr16u::rem#4 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] ) always clobbers reg byte a +Statement [101] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#3 rem16u#1 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#3 rem16u#1 ] ) always clobbers reg byte a +Statement [102] (word) divr16s::resultu#0 ← (word) divr16u::return#3 [ divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16s::resultu#0 rem16u#1 ] ) always clobbers reg byte a +Statement [104] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 [ divr16s::resultu#0 rem16s#2 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::resultu#0 rem16s#2 ] ) always clobbers reg byte a +Statement [105] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ rem16s#2 divr16s::return#1 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16s#2 divr16s::return#1 ] ) always clobbers reg byte a +Statement [108] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ rem16u#1 divr16s::return#7 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 rem16u#1 divr16s::return#7 ] ) always clobbers reg byte a +Statement [109] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 [ divr16s::return#7 rem16s#37 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::return#7 rem16s#37 ] ) always clobbers reg byte a +Statement [110] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$13 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$13 ] ) always clobbers reg byte a +Statement [111] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$13 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$13 ] ) always clobbers reg byte a +Statement [112] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a +Statement [113] (signed word~) divr16s::$8 ← - (signed word) divr16s::dividend#0 [ divr16s::divisor#0 divr16s::$8 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::$8 ] ) always clobbers reg byte a +Statement [114] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$8 [ divr16s::divisor#0 divr16s::dividendu#7 ] ( main:2::test_16s:13::div16s:23::divr16s:87 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::divisor#0 divr16s::dividendu#7 ] ) always clobbers reg byte a +Statement [118] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::test_16s:13::div16s:23::divr16s:87::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::test_16u:9::div16u:228::divr16u:253 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [121] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::test_16s:13::div16s:23::divr16s:87::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::test_16u:9::div16u:228::divr16u:253 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [125] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::test_16s:13::div16s:23::divr16s:87::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::test_16u:9::div16u:228::divr16u:253 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [127] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::test_16s:13::div16s:23::divr16s:87::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::test_16u:9::div16u:228::divr16u:253 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [131] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::test_16s:13::div16s:23::divr16s:87::divr16u:100 [ test_16s::i#10 test_16s::dividend#0 test_16s::divisor#0 print_line_cursor#1 divr16s::neg#4 divr16u::return#0 rem16u#1 ] main:2::test_16u:9::div16u:228::divr16u:253 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [143] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#184 rem8s#3 ] ( main:2::test_8s:11 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 print_sbyte::b#1 print_char_cursor#184 rem8s#3 ] ) always clobbers reg byte a +Statement [172] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::test_8s:11::print_sbyte:144 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:148 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:152 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#18 print_sbyte::b#0 ] main:2::test_8s:11::print_sbyte:156 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a +Statement [185] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 [ div8s::resultu#0 rem8s#2 ] ( main:2::test_8s:11::div8s:139 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::resultu#0 rem8s#2 ] ) always clobbers reg byte a +Statement [186] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 [ rem8s#2 div8s::return#1 ] ( main:2::test_8s:11::div8s:139 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 rem8s#2 div8s::return#1 ] ) always clobbers reg byte a +Statement [191] (signed byte~) div8s::$8 ← - (signed byte) div8s::divisor#0 [ div8s::neg#3 div8s::dividendu#3 div8s::$8 ] ( main:2::test_8s:11::div8s:139 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#3 div8s::dividendu#3 div8s::$8 ] ) always clobbers reg byte a +Statement [192] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ div8s::dividendu#3 div8s::neg#2 div8s::$8 ] ( main:2::test_8s:11::div8s:139 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::dividendu#3 div8s::neg#2 div8s::$8 ] ) always clobbers reg byte a +Statement [194] (signed byte~) div8s::$5 ← - (signed byte) div8s::dividend#0 [ div8s::divisor#0 div8s::$5 ] ( main:2::test_8s:11::div8s:139 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::divisor#0 div8s::$5 ] ) always clobbers reg byte a +Statement [206] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) $80 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ( main:2::test_8s:11::div8s:139::div8u:181::divr8u:199 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] main:2::test_8u:7::div8u:263::divr8u:199 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#1 divr8u::$1 ] ) always clobbers reg byte a +Statement [208] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ( main:2::test_8s:11::div8s:139::div8u:181::divr8u:199 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] main:2::test_8u:7::div8u:263::divr8u:199 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::dividend#2 divr8u::quotient#3 divr8u::i#2 divr8u::rem#2 ] ) always clobbers reg byte a +Statement [214] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 [ divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ( main:2::test_8s:11::div8s:139::div8u:181::divr8u:199 [ print_line_cursor#1 test_8s::i#10 test_8s::dividend#0 test_8s::divisor#0 div8s::neg#4 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] main:2::test_8u:7::div8u:263::divr8u:199 [ print_line_cursor#41 print_char_cursor#138 test_8u::i#10 test_8u::dividend#0 test_8u::divisor#0 divr8u::divisor#0 divr8u::i#2 divr8u::dividend#1 divr8u::quotient#2 divr8u::rem#3 ] ) always clobbers reg byte a +Statement [222] (byte) test_16u::$10 ← (byte) test_16u::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ print_line_cursor#1 test_16u::i#10 test_16u::$10 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::$10 ] ) always clobbers reg byte a +Statement [223] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::$10) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 ] ) always clobbers reg byte a +Statement [224] (byte) test_16u::$11 ← (byte) test_16u::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::$11 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::$11 ] ) always clobbers reg byte a +Statement [225] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::$11) [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 ] ) always clobbers reg byte a +Statement [226] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 ] ) always clobbers reg byte a +Statement [227] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::dividend#0 div16u::divisor#0 ] ) always clobbers reg byte a +Statement [229] (word) div16u::return#2 ← (word) div16u::return#0 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 div16u::return#2 ] ) always clobbers reg byte a +Statement [230] (word) test_16u::res#0 ← (word) div16u::return#2 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a +Statement [231] (word) print_word::w#1 ← (word) test_16u::dividend#0 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a +Statement [232] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_word::w#1 print_char_cursor#166 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_word::w#1 print_char_cursor#166 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 ] ) always clobbers reg byte a +Statement [236] (word) print_word::w#2 ← (word) test_16u::divisor#0 [ print_line_cursor#1 print_char_cursor#128 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#2 rem16u#1 test_16u::i#10 test_16u::res#0 ] ) always clobbers reg byte a +Statement [240] (word) print_word::w#3 ← (word) test_16u::res#0 [ print_line_cursor#1 print_char_cursor#128 print_word::w#3 rem16u#1 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#3 rem16u#1 test_16u::i#10 ] ) always clobbers reg byte a +Statement [244] (word) print_word::w#4 ← (word) rem16u#1 [ print_line_cursor#1 print_char_cursor#128 print_word::w#4 test_16u::i#10 ] ( main:2::test_16u:9 [ print_line_cursor#1 print_char_cursor#128 print_word::w#4 test_16u::i#10 ] ) always clobbers reg byte a +Statement [251] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 [ divr16u::dividend#1 div16u::divisor#0 ] ( main:2::test_16u:9::div16u:228 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 div16u::divisor#0 ] ) always clobbers reg byte a +Statement [252] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 [ divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::test_16u:9::div16u:228 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a +Statement [254] (word) divr16u::return#2 ← (word) divr16u::return#0 [ rem16u#1 divr16u::return#2 ] ( main:2::test_16u:9::div16u:228 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 divr16u::return#2 ] ) always clobbers reg byte a +Statement [255] (word) div16u::return#0 ← (word) divr16u::return#2 [ rem16u#1 div16u::return#0 ] ( main:2::test_16u:9::div16u:228 [ print_line_cursor#1 test_16u::i#10 test_16u::dividend#0 test_16u::divisor#0 rem16u#1 div16u::return#0 ] ) always clobbers reg byte a +Statement [285] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ( main:2::test_8u:7 [ print_line_cursor#1 test_8u::i#1 print_char_cursor#188 ] ) always clobbers reg byte a +Statement [288] *((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 [290] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $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 [ test_16s::i#10 test_16s::i#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] : zp ZP_WORD:3 , Potential registers zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 ] : zp ZP_WORD:5 , @@ -6688,188 +6752,192 @@ Potential registers zp ZP_BYTE:47 [ divr8u::i#2 divr8u::i#1 ] : zp ZP_BYTE:47 , Potential registers zp ZP_BYTE:48 [ test_16u::i#10 test_16u::i#1 ] : zp ZP_BYTE:48 , reg byte x , Potential registers zp ZP_BYTE:49 [ test_8u::i#10 test_8u::i#1 ] : zp ZP_BYTE:49 , reg byte x , Potential registers zp ZP_WORD:50 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:50 , -Potential registers zp ZP_WORD:52 [ test_16s::dividend#0 ] : zp ZP_WORD:52 , -Potential registers zp ZP_WORD:54 [ test_16s::divisor#0 ] : zp ZP_WORD:54 , -Potential registers zp ZP_WORD:56 [ div16s::dividend#0 ] : zp ZP_WORD:56 , -Potential registers zp ZP_WORD:58 [ div16s::divisor#0 ] : zp ZP_WORD:58 , -Potential registers zp ZP_WORD:60 [ div16s::return#2 ] : zp ZP_WORD:60 , -Potential registers zp ZP_WORD:62 [ test_16s::res#0 ] : zp ZP_WORD:62 , -Potential registers zp ZP_BYTE:64 [ print_byte::$0 ] : zp ZP_BYTE:64 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:65 [ print_byte::$2 ] : zp ZP_BYTE:65 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:66 [ divr16s::dividend#0 ] : zp ZP_WORD:66 , -Potential registers zp ZP_WORD:68 [ divr16s::divisor#0 ] : zp ZP_WORD:68 , -Potential registers zp ZP_WORD:70 [ divr16s::return#3 ] : zp ZP_WORD:70 , -Potential registers zp ZP_WORD:72 [ div16s::return#0 ] : zp ZP_WORD:72 , -Potential registers zp ZP_WORD:74 [ divr16u::return#3 ] : zp ZP_WORD:74 , -Potential registers zp ZP_WORD:76 [ divr16s::resultu#0 ] : zp ZP_WORD:76 , -Potential registers zp ZP_WORD:78 [ divr16s::$13 ] : zp ZP_WORD:78 , -Potential registers zp ZP_WORD:80 [ divr16s::$8 ] : zp ZP_WORD:80 , -Potential registers zp ZP_BYTE:82 [ divr16u::$1 ] : zp ZP_BYTE:82 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:83 [ divr16u::$2 ] : zp ZP_BYTE:83 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:84 [ rem16u#1 ] : zp ZP_WORD:84 , -Potential registers zp ZP_BYTE:86 [ test_8s::dividend#0 ] : zp ZP_BYTE:86 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:87 [ test_8s::divisor#0 ] : zp ZP_BYTE:87 , reg byte x , -Potential registers zp ZP_BYTE:88 [ div8s::dividend#0 ] : zp ZP_BYTE:88 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:89 [ div8s::divisor#0 ] : zp ZP_BYTE:89 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:90 [ div8s::return#3 ] : zp ZP_BYTE:90 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:91 [ test_8s::res#0 ] : zp ZP_BYTE:91 , reg byte x , -Potential registers zp ZP_BYTE:92 [ div8u::return#2 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:93 [ div8s::resultu#0 ] : zp ZP_BYTE:93 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:94 [ div8s::$8 ] : zp ZP_BYTE:94 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:95 [ div8s::$5 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:96 [ divr8u::divisor#0 ] : zp ZP_BYTE:96 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:97 [ divr8u::return#0 ] : zp ZP_BYTE:97 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:98 [ div8u::return#0 ] : zp ZP_BYTE:98 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:99 [ divr8u::$1 ] : zp ZP_BYTE:99 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:100 [ rem8u#17 ] : zp ZP_BYTE:100 , reg byte x , -Potential registers zp ZP_WORD:101 [ test_16u::dividend#0 ] : zp ZP_WORD:101 , -Potential registers zp ZP_WORD:103 [ test_16u::divisor#0 ] : zp ZP_WORD:103 , -Potential registers zp ZP_WORD:105 [ div16u::dividend#0 ] : zp ZP_WORD:105 , -Potential registers zp ZP_WORD:107 [ div16u::divisor#0 ] : zp ZP_WORD:107 , -Potential registers zp ZP_WORD:109 [ div16u::return#2 ] : zp ZP_WORD:109 , -Potential registers zp ZP_WORD:111 [ test_16u::res#0 ] : zp ZP_WORD:111 , -Potential registers zp ZP_WORD:113 [ divr16u::return#2 ] : zp ZP_WORD:113 , -Potential registers zp ZP_WORD:115 [ div16u::return#0 ] : zp ZP_WORD:115 , -Potential registers zp ZP_BYTE:117 [ test_8u::dividend#0 ] : zp ZP_BYTE:117 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:118 [ test_8u::divisor#0 ] : zp ZP_BYTE:118 , reg byte x , -Potential registers zp ZP_BYTE:119 [ div8u::return#3 ] : zp ZP_BYTE:119 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:120 [ test_8u::res#0 ] : zp ZP_BYTE:120 , reg byte x , +Potential registers zp ZP_BYTE:52 [ test_16s::$16 ] : zp ZP_BYTE:52 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:53 [ test_16s::dividend#0 ] : zp ZP_WORD:53 , +Potential registers zp ZP_BYTE:55 [ test_16s::$17 ] : zp ZP_BYTE:55 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:56 [ test_16s::divisor#0 ] : zp ZP_WORD:56 , +Potential registers zp ZP_WORD:58 [ div16s::dividend#0 ] : zp ZP_WORD:58 , +Potential registers zp ZP_WORD:60 [ div16s::divisor#0 ] : zp ZP_WORD:60 , +Potential registers zp ZP_WORD:62 [ div16s::return#2 ] : zp ZP_WORD:62 , +Potential registers zp ZP_WORD:64 [ test_16s::res#0 ] : zp ZP_WORD:64 , +Potential registers zp ZP_BYTE:66 [ print_byte::$0 ] : zp ZP_BYTE:66 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:67 [ print_byte::$2 ] : zp ZP_BYTE:67 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:68 [ divr16s::dividend#0 ] : zp ZP_WORD:68 , +Potential registers zp ZP_WORD:70 [ divr16s::divisor#0 ] : zp ZP_WORD:70 , +Potential registers zp ZP_WORD:72 [ divr16s::return#3 ] : zp ZP_WORD:72 , +Potential registers zp ZP_WORD:74 [ div16s::return#0 ] : zp ZP_WORD:74 , +Potential registers zp ZP_WORD:76 [ divr16u::return#3 ] : zp ZP_WORD:76 , +Potential registers zp ZP_WORD:78 [ divr16s::resultu#0 ] : zp ZP_WORD:78 , +Potential registers zp ZP_WORD:80 [ divr16s::$13 ] : zp ZP_WORD:80 , +Potential registers zp ZP_WORD:82 [ divr16s::$8 ] : zp ZP_WORD:82 , +Potential registers zp ZP_BYTE:84 [ divr16u::$1 ] : zp ZP_BYTE:84 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:85 [ divr16u::$2 ] : zp ZP_BYTE:85 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:86 [ rem16u#1 ] : zp ZP_WORD:86 , +Potential registers zp ZP_BYTE:88 [ test_8s::dividend#0 ] : zp ZP_BYTE:88 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:89 [ test_8s::divisor#0 ] : zp ZP_BYTE:89 , reg byte x , +Potential registers zp ZP_BYTE:90 [ div8s::dividend#0 ] : zp ZP_BYTE:90 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:91 [ div8s::divisor#0 ] : zp ZP_BYTE:91 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:92 [ div8s::return#3 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:93 [ test_8s::res#0 ] : zp ZP_BYTE:93 , reg byte x , +Potential registers zp ZP_BYTE:94 [ div8u::return#2 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:95 [ div8s::resultu#0 ] : zp ZP_BYTE:95 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:96 [ div8s::$8 ] : zp ZP_BYTE:96 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:97 [ div8s::$5 ] : zp ZP_BYTE:97 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:98 [ divr8u::divisor#0 ] : zp ZP_BYTE:98 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:99 [ divr8u::return#0 ] : zp ZP_BYTE:99 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:100 [ div8u::return#0 ] : zp ZP_BYTE:100 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:101 [ divr8u::$1 ] : zp ZP_BYTE:101 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:102 [ rem8u#17 ] : zp ZP_BYTE:102 , reg byte x , +Potential registers zp ZP_BYTE:103 [ test_16u::$10 ] : zp ZP_BYTE:103 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:104 [ test_16u::dividend#0 ] : zp ZP_WORD:104 , +Potential registers zp ZP_BYTE:106 [ test_16u::$11 ] : zp ZP_BYTE:106 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:107 [ test_16u::divisor#0 ] : zp ZP_WORD:107 , +Potential registers zp ZP_WORD:109 [ div16u::dividend#0 ] : zp ZP_WORD:109 , +Potential registers zp ZP_WORD:111 [ div16u::divisor#0 ] : zp ZP_WORD:111 , +Potential registers zp ZP_WORD:113 [ div16u::return#2 ] : zp ZP_WORD:113 , +Potential registers zp ZP_WORD:115 [ test_16u::res#0 ] : zp ZP_WORD:115 , +Potential registers zp ZP_WORD:117 [ divr16u::return#2 ] : zp ZP_WORD:117 , +Potential registers zp ZP_WORD:119 [ div16u::return#0 ] : zp ZP_WORD:119 , +Potential registers zp ZP_BYTE:121 [ test_8u::dividend#0 ] : zp ZP_BYTE:121 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:122 [ test_8u::divisor#0 ] : zp ZP_BYTE:122 , reg byte x , +Potential registers zp ZP_BYTE:123 [ div8u::return#3 ] : zp ZP_BYTE:123 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:124 [ test_8u::res#0 ] : zp ZP_BYTE:124 , reg byte x , REGISTER UPLIFT SCOPES -Uplift Scope [divr16u] 894.42: zp ZP_WORD:28 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 321.61: zp ZP_WORD:32 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 202: zp ZP_BYTE:82 [ divr16u::$1 ] 202: zp ZP_BYTE:83 [ divr16u::$2 ] 167.04: zp ZP_BYTE:34 [ divr16u::i#2 divr16u::i#1 ] 78.15: zp ZP_WORD:30 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] 18.88: zp ZP_WORD:26 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] 4: zp ZP_WORD:74 [ divr16u::return#3 ] 4: zp ZP_WORD:113 [ divr16u::return#2 ] -Uplift Scope [divr8u] 909.67: zp ZP_BYTE:44 [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ] 332.19: zp ZP_BYTE:46 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] 202: zp ZP_BYTE:99 [ divr8u::$1 ] 168.33: zp ZP_BYTE:47 [ divr8u::i#2 divr8u::i#1 ] 77.42: zp ZP_BYTE:45 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] 12.75: zp ZP_BYTE:96 [ divr8u::divisor#0 ] 4: zp ZP_BYTE:97 [ divr8u::return#0 ] -Uplift Scope [] 288.3: zp ZP_WORD:11 [ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#159 print_char_cursor#128 print_char_cursor#18 print_char_cursor#166 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#184 print_char_cursor#188 ] 254.87: zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] 6.83: zp ZP_BYTE:41 [ rem8s#3 rem8s#2 rem8s#33 ] 6.68: zp ZP_WORD:24 [ rem16s#11 rem16s#2 rem16s#37 ] 0.5: zp ZP_BYTE:100 [ rem8u#17 ] 0.48: zp ZP_WORD:84 [ rem16u#1 ] +Uplift Scope [divr16u] 894.42: zp ZP_WORD:28 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 321.61: zp ZP_WORD:32 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 202: zp ZP_BYTE:84 [ divr16u::$1 ] 202: zp ZP_BYTE:85 [ divr16u::$2 ] 167.04: zp ZP_BYTE:34 [ divr16u::i#2 divr16u::i#1 ] 78.15: zp ZP_WORD:30 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] 18.88: zp ZP_WORD:26 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] 4: zp ZP_WORD:76 [ divr16u::return#3 ] 4: zp ZP_WORD:117 [ divr16u::return#2 ] +Uplift Scope [divr8u] 909.67: zp ZP_BYTE:44 [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ] 332.19: zp ZP_BYTE:46 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] 202: zp ZP_BYTE:101 [ divr8u::$1 ] 168.33: zp ZP_BYTE:47 [ divr8u::i#2 divr8u::i#1 ] 77.42: zp ZP_BYTE:45 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] 12.75: zp ZP_BYTE:98 [ divr8u::divisor#0 ] 4: zp ZP_BYTE:99 [ divr8u::return#0 ] +Uplift Scope [] 288.3: zp ZP_WORD:11 [ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#159 print_char_cursor#128 print_char_cursor#18 print_char_cursor#166 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#184 print_char_cursor#188 ] 254.72: zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] 6.83: zp ZP_BYTE:41 [ rem8s#3 rem8s#2 rem8s#33 ] 6.68: zp ZP_WORD:24 [ rem16s#11 rem16s#2 rem16s#37 ] 0.5: zp ZP_BYTE:102 [ rem8u#17 ] 0.48: zp ZP_WORD:86 [ rem16u#1 ] Uplift Scope [print_str] 305.5: zp ZP_WORD:13 [ print_str::str#13 print_str::str#15 print_str::str#0 ] -Uplift Scope [print_byte] 113.5: zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] 4: zp ZP_BYTE:64 [ print_byte::$0 ] 4: zp ZP_BYTE:65 [ print_byte::$2 ] +Uplift Scope [print_byte] 113.5: zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] 4: zp ZP_BYTE:66 [ print_byte::$0 ] 4: zp ZP_BYTE:67 [ print_byte::$2 ] Uplift Scope [print_word] 97.67: zp ZP_WORD:7 [ print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] Uplift Scope [print_sword] 97.5: zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 ] Uplift Scope [print_sbyte] 93.33: zp ZP_BYTE:36 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] -Uplift Scope [div8u] 33.5: zp ZP_BYTE:43 [ div8u::divisor#2 div8u::divisor#0 div8u::divisor#1 ] 28: zp ZP_BYTE:42 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] 22: zp ZP_BYTE:119 [ div8u::return#3 ] 4: zp ZP_BYTE:92 [ div8u::return#2 ] 3.75: zp ZP_BYTE:98 [ div8u::return#0 ] -Uplift Scope [div8s] 22: zp ZP_BYTE:90 [ div8s::return#3 ] 11: zp ZP_BYTE:38 [ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ] 11: zp ZP_BYTE:40 [ div8s::return#2 div8s::return#1 div8s::return#7 ] 8.86: zp ZP_BYTE:37 [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] 5: zp ZP_BYTE:88 [ div8s::dividend#0 ] 4: zp ZP_BYTE:39 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] 2.14: zp ZP_BYTE:89 [ div8s::divisor#0 ] 2: zp ZP_BYTE:95 [ div8s::$5 ] 1: zp ZP_BYTE:94 [ div8s::$8 ] 0.67: zp ZP_BYTE:93 [ div8s::resultu#0 ] -Uplift Scope [divr16s] 11: zp ZP_WORD:19 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] 8.86: zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ] 8: zp ZP_WORD:22 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] 4: zp ZP_WORD:70 [ divr16s::return#3 ] 3.86: zp ZP_BYTE:21 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] 2: zp ZP_WORD:66 [ divr16s::dividend#0 ] 2: zp ZP_WORD:80 [ divr16s::$8 ] 1: zp ZP_WORD:78 [ divr16s::$13 ] 0.86: zp ZP_WORD:68 [ divr16s::divisor#0 ] 0.67: zp ZP_WORD:76 [ divr16s::resultu#0 ] 0.22: zp ZP_WORD:17 [ divr16s::remu#3 ] -Uplift Scope [div16u] 22: zp ZP_WORD:109 [ div16u::return#2 ] 6.5: zp ZP_WORD:105 [ div16u::dividend#0 ] 6.5: zp ZP_WORD:107 [ div16u::divisor#0 ] 4.33: zp ZP_WORD:115 [ div16u::return#0 ] -Uplift Scope [div16s] 22: zp ZP_WORD:60 [ div16s::return#2 ] 6.5: zp ZP_WORD:56 [ div16s::dividend#0 ] 6.5: zp ZP_WORD:58 [ div16s::divisor#0 ] 4.33: zp ZP_WORD:72 [ div16s::return#0 ] +Uplift Scope [div8u] 33.5: zp ZP_BYTE:43 [ div8u::divisor#2 div8u::divisor#0 div8u::divisor#1 ] 28: zp ZP_BYTE:42 [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] 22: zp ZP_BYTE:123 [ div8u::return#3 ] 4: zp ZP_BYTE:94 [ div8u::return#2 ] 3.75: zp ZP_BYTE:100 [ div8u::return#0 ] +Uplift Scope [test_16u] 22: zp ZP_BYTE:103 [ test_16u::$10 ] 22: zp ZP_BYTE:106 [ test_16u::$11 ] 18.13: zp ZP_BYTE:48 [ test_16u::i#10 test_16u::i#1 ] 4.12: zp ZP_WORD:104 [ test_16u::dividend#0 ] 3: zp ZP_WORD:107 [ test_16u::divisor#0 ] 2.2: zp ZP_WORD:115 [ test_16u::res#0 ] +Uplift Scope [test_16s] 22: zp ZP_BYTE:52 [ test_16s::$16 ] 22: zp ZP_BYTE:55 [ test_16s::$17 ] 18.13: zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] 4.12: zp ZP_WORD:53 [ test_16s::dividend#0 ] 3: zp ZP_WORD:56 [ test_16s::divisor#0 ] 2.2: zp ZP_WORD:64 [ test_16s::res#0 ] +Uplift Scope [div8s] 22: zp ZP_BYTE:92 [ div8s::return#3 ] 11: zp ZP_BYTE:38 [ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ] 11: zp ZP_BYTE:40 [ div8s::return#2 div8s::return#1 div8s::return#7 ] 8.86: zp ZP_BYTE:37 [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] 5: zp ZP_BYTE:90 [ div8s::dividend#0 ] 4: zp ZP_BYTE:39 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] 2.14: zp ZP_BYTE:91 [ div8s::divisor#0 ] 2: zp ZP_BYTE:97 [ div8s::$5 ] 1: zp ZP_BYTE:96 [ div8s::$8 ] 0.67: zp ZP_BYTE:95 [ div8s::resultu#0 ] +Uplift Scope [divr16s] 11: zp ZP_WORD:19 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] 8.86: zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ] 8: zp ZP_WORD:22 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] 4: zp ZP_WORD:72 [ divr16s::return#3 ] 3.86: zp ZP_BYTE:21 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] 2: zp ZP_WORD:68 [ divr16s::dividend#0 ] 2: zp ZP_WORD:82 [ divr16s::$8 ] 1: zp ZP_WORD:80 [ divr16s::$13 ] 0.86: zp ZP_WORD:70 [ divr16s::divisor#0 ] 0.67: zp ZP_WORD:78 [ divr16s::resultu#0 ] 0.22: zp ZP_WORD:17 [ divr16s::remu#3 ] +Uplift Scope [div16u] 22: zp ZP_WORD:113 [ div16u::return#2 ] 6.5: zp ZP_WORD:109 [ div16u::dividend#0 ] 6.5: zp ZP_WORD:111 [ div16u::divisor#0 ] 4.33: zp ZP_WORD:119 [ div16u::return#0 ] +Uplift Scope [div16s] 22: zp ZP_WORD:62 [ div16s::return#2 ] 6.5: zp ZP_WORD:58 [ div16s::dividend#0 ] 6.5: zp ZP_WORD:60 [ div16s::divisor#0 ] 4.33: zp ZP_WORD:74 [ div16s::return#0 ] Uplift Scope [print_cls] 33: zp ZP_WORD:50 [ print_cls::sc#2 print_cls::sc#1 ] -Uplift Scope [test_16u] 18.26: zp ZP_BYTE:48 [ test_16u::i#10 test_16u::i#1 ] 4.71: zp ZP_WORD:101 [ test_16u::dividend#0 ] 3: zp ZP_WORD:103 [ test_16u::divisor#0 ] 2.2: zp ZP_WORD:111 [ test_16u::res#0 ] -Uplift Scope [test_8s] 18.26: zp ZP_BYTE:35 [ test_8s::i#10 test_8s::i#1 ] 4.71: zp ZP_BYTE:86 [ test_8s::dividend#0 ] 3: zp ZP_BYTE:87 [ test_8s::divisor#0 ] 2.2: zp ZP_BYTE:91 [ test_8s::res#0 ] -Uplift Scope [test_16s] 18.26: zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] 4.71: zp ZP_WORD:52 [ test_16s::dividend#0 ] 3: zp ZP_WORD:54 [ test_16s::divisor#0 ] 2.2: zp ZP_WORD:62 [ test_16s::res#0 ] -Uplift Scope [test_8u] 12.83: zp ZP_BYTE:49 [ test_8u::i#10 test_8u::i#1 ] 4.71: zp ZP_BYTE:117 [ test_8u::dividend#0 ] 3.3: zp ZP_BYTE:118 [ test_8u::divisor#0 ] 2.44: zp ZP_BYTE:120 [ test_8u::res#0 ] +Uplift Scope [test_8s] 18.26: zp ZP_BYTE:35 [ test_8s::i#10 test_8s::i#1 ] 4.71: zp ZP_BYTE:88 [ test_8s::dividend#0 ] 3: zp ZP_BYTE:89 [ test_8s::divisor#0 ] 2.2: zp ZP_BYTE:93 [ test_8s::res#0 ] +Uplift Scope [test_8u] 12.83: zp ZP_BYTE:49 [ test_8u::i#10 test_8u::i#1 ] 4.71: zp ZP_BYTE:121 [ test_8u::dividend#0 ] 3.3: zp ZP_BYTE:122 [ test_8u::divisor#0 ] 2.44: zp ZP_BYTE:124 [ test_8u::res#0 ] Uplift Scope [print_char] 14: zp ZP_BYTE:10 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] Uplift Scope [print_ln] Uplift Scope [main] -Uplifting [divr16u] best 44181 combination zp ZP_WORD:28 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:32 [ 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:30 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] zp ZP_WORD:26 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] zp ZP_WORD:74 [ divr16u::return#3 ] zp ZP_WORD:113 [ divr16u::return#2 ] -Uplifting [divr8u] best 41778 combination reg byte y [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ] zp ZP_BYTE:46 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] reg byte a [ divr8u::$1 ] reg byte x [ divr8u::i#2 divr8u::i#1 ] zp ZP_BYTE:45 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] zp ZP_BYTE:96 [ divr8u::divisor#0 ] zp ZP_BYTE:97 [ divr8u::return#0 ] +Uplifting [divr16u] best 44401 combination zp ZP_WORD:28 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:32 [ 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:30 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] zp ZP_WORD:26 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] zp ZP_WORD:76 [ divr16u::return#3 ] zp ZP_WORD:117 [ divr16u::return#2 ] +Uplifting [divr8u] best 41998 combination reg byte y [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::rem#2 divr8u::rem#3 ] zp ZP_BYTE:46 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] reg byte a [ divr8u::$1 ] reg byte x [ divr8u::i#2 divr8u::i#1 ] zp ZP_BYTE:45 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] zp ZP_BYTE:98 [ divr8u::divisor#0 ] zp ZP_BYTE:99 [ divr8u::return#0 ] Limited combination testing to 100 combinations of 3888 possible. -Uplifting [] best 41711 combination zp ZP_WORD:11 [ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#159 print_char_cursor#128 print_char_cursor#18 print_char_cursor#166 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#184 print_char_cursor#188 ] zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] reg byte x [ rem8s#3 rem8s#2 rem8s#33 ] zp ZP_WORD:24 [ rem16s#11 rem16s#2 rem16s#37 ] reg byte x [ rem8u#17 ] zp ZP_WORD:84 [ rem16u#1 ] -Uplifting [print_str] best 41711 combination zp ZP_WORD:13 [ print_str::str#13 print_str::str#15 print_str::str#0 ] -Uplifting [print_byte] best 41703 combination zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [print_word] best 41703 combination zp ZP_WORD:7 [ print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] -Uplifting [print_sword] best 41703 combination zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 ] -Uplifting [print_sbyte] best 41703 combination zp ZP_BYTE:36 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] -Uplifting [div8u] best 41565 combination reg byte x [ div8u::divisor#2 div8u::divisor#0 div8u::divisor#1 ] reg byte a [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] reg byte a [ div8u::return#3 ] reg byte a [ div8u::return#2 ] zp ZP_BYTE:98 [ div8u::return#0 ] +Uplifting [] best 41931 combination zp ZP_WORD:11 [ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#159 print_char_cursor#128 print_char_cursor#18 print_char_cursor#166 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#184 print_char_cursor#188 ] zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] reg byte x [ rem8s#3 rem8s#2 rem8s#33 ] zp ZP_WORD:24 [ rem16s#11 rem16s#2 rem16s#37 ] reg byte x [ rem8u#17 ] zp ZP_WORD:86 [ rem16u#1 ] +Uplifting [print_str] best 41931 combination zp ZP_WORD:13 [ print_str::str#13 print_str::str#15 print_str::str#0 ] +Uplifting [print_byte] best 41923 combination zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_word] best 41923 combination zp ZP_WORD:7 [ print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] +Uplifting [print_sword] best 41923 combination zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 ] +Uplifting [print_sbyte] best 41923 combination zp ZP_BYTE:36 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] +Uplifting [div8u] best 41785 combination reg byte x [ div8u::divisor#2 div8u::divisor#0 div8u::divisor#1 ] reg byte a [ div8u::dividend#2 div8u::dividend#0 div8u::dividend#1 ] reg byte a [ div8u::return#3 ] reg byte a [ div8u::return#2 ] zp ZP_BYTE:100 [ div8u::return#0 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [div8s] best 41460 combination reg byte a [ div8s::return#3 ] reg byte x [ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ] reg byte a [ div8s::return#2 div8s::return#1 div8s::return#7 ] zp ZP_BYTE:37 [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] zp ZP_BYTE:88 [ div8s::dividend#0 ] zp ZP_BYTE:39 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] zp ZP_BYTE:89 [ div8s::divisor#0 ] zp ZP_BYTE:95 [ div8s::$5 ] zp ZP_BYTE:94 [ div8s::$8 ] zp ZP_BYTE:93 [ div8s::resultu#0 ] +Uplifting [test_16u] best 41705 combination reg byte a [ test_16u::$10 ] reg byte a [ test_16u::$11 ] zp ZP_BYTE:48 [ test_16u::i#10 test_16u::i#1 ] zp ZP_WORD:104 [ test_16u::dividend#0 ] zp ZP_WORD:107 [ test_16u::divisor#0 ] zp ZP_WORD:115 [ test_16u::res#0 ] +Uplifting [test_16s] best 41625 combination reg byte a [ test_16s::$16 ] reg byte a [ test_16s::$17 ] zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] zp ZP_WORD:53 [ test_16s::dividend#0 ] zp ZP_WORD:56 [ test_16s::divisor#0 ] zp ZP_WORD:64 [ test_16s::res#0 ] +Uplifting [div8s] best 41520 combination reg byte a [ div8s::return#3 ] reg byte x [ div8s::divisoru#3 div8s::divisoru#4 div8s::divisoru#5 ] reg byte a [ div8s::return#2 div8s::return#1 div8s::return#7 ] zp ZP_BYTE:37 [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] zp ZP_BYTE:90 [ div8s::dividend#0 ] zp ZP_BYTE:39 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] zp ZP_BYTE:91 [ div8s::divisor#0 ] zp ZP_BYTE:97 [ div8s::$5 ] zp ZP_BYTE:96 [ div8s::$8 ] zp ZP_BYTE:95 [ div8s::resultu#0 ] Limited combination testing to 100 combinations of 248832 possible. -Uplifting [divr16s] best 41449 combination zp ZP_WORD:19 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ] zp ZP_WORD:22 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] zp ZP_WORD:70 [ divr16s::return#3 ] reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] zp ZP_WORD:66 [ divr16s::dividend#0 ] zp ZP_WORD:80 [ divr16s::$8 ] zp ZP_WORD:78 [ divr16s::$13 ] zp ZP_WORD:68 [ divr16s::divisor#0 ] zp ZP_WORD:76 [ divr16s::resultu#0 ] zp ZP_WORD:17 [ divr16s::remu#3 ] -Uplifting [div16u] best 41449 combination zp ZP_WORD:109 [ div16u::return#2 ] zp ZP_WORD:105 [ div16u::dividend#0 ] zp ZP_WORD:107 [ div16u::divisor#0 ] zp ZP_WORD:115 [ div16u::return#0 ] -Uplifting [div16s] best 41449 combination zp ZP_WORD:60 [ div16s::return#2 ] zp ZP_WORD:56 [ div16s::dividend#0 ] zp ZP_WORD:58 [ div16s::divisor#0 ] zp ZP_WORD:72 [ div16s::return#0 ] -Uplifting [print_cls] best 41449 combination zp ZP_WORD:50 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [test_16u] best 41449 combination zp ZP_BYTE:48 [ test_16u::i#10 test_16u::i#1 ] zp ZP_WORD:101 [ test_16u::dividend#0 ] zp ZP_WORD:103 [ test_16u::divisor#0 ] zp ZP_WORD:111 [ test_16u::res#0 ] -Uplifting [test_8s] best 41449 combination zp ZP_BYTE:35 [ test_8s::i#10 test_8s::i#1 ] zp ZP_BYTE:86 [ test_8s::dividend#0 ] zp ZP_BYTE:87 [ test_8s::divisor#0 ] zp ZP_BYTE:91 [ test_8s::res#0 ] -Uplifting [test_16s] best 41449 combination zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] zp ZP_WORD:52 [ test_16s::dividend#0 ] zp ZP_WORD:54 [ test_16s::divisor#0 ] zp ZP_WORD:62 [ test_16s::res#0 ] -Uplifting [test_8u] best 41449 combination zp ZP_BYTE:49 [ test_8u::i#10 test_8u::i#1 ] zp ZP_BYTE:117 [ test_8u::dividend#0 ] zp ZP_BYTE:118 [ test_8u::divisor#0 ] zp ZP_BYTE:120 [ test_8u::res#0 ] -Uplifting [print_char] best 41431 combination reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -Uplifting [print_ln] best 41431 combination -Uplifting [main] best 41431 combination +Uplifting [divr16s] best 41509 combination zp ZP_WORD:19 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ] zp ZP_WORD:22 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] zp ZP_WORD:72 [ divr16s::return#3 ] reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] zp ZP_WORD:68 [ divr16s::dividend#0 ] zp ZP_WORD:82 [ divr16s::$8 ] zp ZP_WORD:80 [ divr16s::$13 ] zp ZP_WORD:70 [ divr16s::divisor#0 ] zp ZP_WORD:78 [ divr16s::resultu#0 ] zp ZP_WORD:17 [ divr16s::remu#3 ] +Uplifting [div16u] best 41509 combination zp ZP_WORD:113 [ div16u::return#2 ] zp ZP_WORD:109 [ div16u::dividend#0 ] zp ZP_WORD:111 [ div16u::divisor#0 ] zp ZP_WORD:119 [ div16u::return#0 ] +Uplifting [div16s] best 41509 combination zp ZP_WORD:62 [ div16s::return#2 ] zp ZP_WORD:58 [ div16s::dividend#0 ] zp ZP_WORD:60 [ div16s::divisor#0 ] zp ZP_WORD:74 [ div16s::return#0 ] +Uplifting [print_cls] best 41509 combination zp ZP_WORD:50 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [test_8s] best 41509 combination zp ZP_BYTE:35 [ test_8s::i#10 test_8s::i#1 ] zp ZP_BYTE:88 [ test_8s::dividend#0 ] zp ZP_BYTE:89 [ test_8s::divisor#0 ] zp ZP_BYTE:93 [ test_8s::res#0 ] +Uplifting [test_8u] best 41509 combination zp ZP_BYTE:49 [ test_8u::i#10 test_8u::i#1 ] zp ZP_BYTE:121 [ test_8u::dividend#0 ] zp ZP_BYTE:122 [ test_8u::divisor#0 ] zp ZP_BYTE:124 [ test_8u::res#0 ] +Uplifting [print_char] best 41491 combination reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] +Uplifting [print_ln] best 41491 combination +Uplifting [main] best 41491 combination Attempting to uplift remaining variables inzp ZP_BYTE:46 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] -Uplifting [divr8u] best 41431 combination zp ZP_BYTE:46 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] +Uplifting [divr8u] best 41491 combination zp ZP_BYTE:46 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] -Uplifting [print_byte] best 41431 combination zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] +Uplifting [print_byte] best 41491 combination zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] Attempting to uplift remaining variables inzp ZP_BYTE:36 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] -Uplifting [print_sbyte] best 41431 combination zp ZP_BYTE:36 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] +Uplifting [print_sbyte] best 41491 combination zp ZP_BYTE:36 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] Attempting to uplift remaining variables inzp ZP_BYTE:45 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] -Uplifting [divr8u] best 41431 combination zp ZP_BYTE:45 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] -Uplifting [test_16s] best 41431 combination zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] +Uplifting [divr8u] best 41491 combination zp ZP_BYTE:45 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:35 [ test_8s::i#10 test_8s::i#1 ] -Uplifting [test_8s] best 41431 combination zp ZP_BYTE:35 [ test_8s::i#10 test_8s::i#1 ] +Uplifting [test_8s] best 41491 combination zp ZP_BYTE:35 [ test_8s::i#10 test_8s::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] +Uplifting [test_16s] best 41491 combination zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:48 [ test_16u::i#10 test_16u::i#1 ] -Uplifting [test_16u] best 41431 combination zp ZP_BYTE:48 [ test_16u::i#10 test_16u::i#1 ] +Uplifting [test_16u] best 41491 combination zp ZP_BYTE:48 [ test_16u::i#10 test_16u::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:49 [ test_8u::i#10 test_8u::i#1 ] -Uplifting [test_8u] best 41431 combination zp ZP_BYTE:49 [ test_8u::i#10 test_8u::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:96 [ divr8u::divisor#0 ] -Uplifting [divr8u] best 41431 combination zp ZP_BYTE:96 [ divr8u::divisor#0 ] +Uplifting [test_8u] best 41491 combination zp ZP_BYTE:49 [ test_8u::i#10 test_8u::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:98 [ divr8u::divisor#0 ] +Uplifting [divr8u] best 41491 combination zp ZP_BYTE:98 [ divr8u::divisor#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:37 [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] -Uplifting [div8s] best 41424 combination reg byte y [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] -Attempting to uplift remaining variables inzp ZP_BYTE:88 [ div8s::dividend#0 ] -Uplifting [div8s] best 41389 combination reg byte y [ div8s::dividend#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:86 [ test_8s::dividend#0 ] -Uplifting [test_8s] best 41389 combination zp ZP_BYTE:86 [ test_8s::dividend#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:117 [ test_8u::dividend#0 ] -Uplifting [test_8u] best 41389 combination zp ZP_BYTE:117 [ test_8u::dividend#0 ] +Uplifting [div8s] best 41484 combination reg byte y [ div8s::dividendu#3 div8s::dividendu#7 div8s::dividendu#8 ] +Attempting to uplift remaining variables inzp ZP_BYTE:90 [ div8s::dividend#0 ] +Uplifting [div8s] best 41449 combination reg byte y [ div8s::dividend#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:88 [ test_8s::dividend#0 ] +Uplifting [test_8s] best 41449 combination zp ZP_BYTE:88 [ test_8s::dividend#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:121 [ test_8u::dividend#0 ] +Uplifting [test_8u] best 41449 combination zp ZP_BYTE:121 [ test_8u::dividend#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:39 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] -Uplifting [div8s] best 41389 combination zp ZP_BYTE:39 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:97 [ divr8u::return#0 ] -Uplifting [divr8u] best 41383 combination reg byte a [ divr8u::return#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:98 [ div8u::return#0 ] -Uplifting [div8u] best 41347 combination reg byte a [ div8u::return#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:118 [ test_8u::divisor#0 ] -Uplifting [test_8u] best 41347 combination zp ZP_BYTE:118 [ test_8u::divisor#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:87 [ test_8s::divisor#0 ] -Uplifting [test_8s] best 41347 combination zp ZP_BYTE:87 [ test_8s::divisor#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:120 [ test_8u::res#0 ] -Uplifting [test_8u] best 41347 combination zp ZP_BYTE:120 [ test_8u::res#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:91 [ test_8s::res#0 ] -Uplifting [test_8s] best 41347 combination zp ZP_BYTE:91 [ test_8s::res#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:89 [ div8s::divisor#0 ] -Uplifting [div8s] best 41312 combination reg byte x [ div8s::divisor#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:95 [ div8s::$5 ] -Uplifting [div8s] best 41308 combination reg byte a [ div8s::$5 ] -Attempting to uplift remaining variables inzp ZP_BYTE:94 [ div8s::$8 ] -Uplifting [div8s] best 41304 combination reg byte x [ div8s::$8 ] -Attempting to uplift remaining variables inzp ZP_BYTE:93 [ div8s::resultu#0 ] -Uplifting [div8s] best 41301 combination reg byte y [ div8s::resultu#0 ] -Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] ] with [ zp ZP_WORD:76 [ divr16s::resultu#0 ] ] - score: 2 -Coalescing zero page register with common assignment [ zp ZP_WORD:24 [ rem16s#11 rem16s#2 rem16s#37 ] ] with [ zp ZP_WORD:84 [ rem16u#1 ] ] - score: 2 +Uplifting [div8s] best 41449 combination zp ZP_BYTE:39 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:99 [ divr8u::return#0 ] +Uplifting [divr8u] best 41443 combination reg byte a [ divr8u::return#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:100 [ div8u::return#0 ] +Uplifting [div8u] best 41407 combination reg byte a [ div8u::return#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:122 [ test_8u::divisor#0 ] +Uplifting [test_8u] best 41407 combination zp ZP_BYTE:122 [ test_8u::divisor#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:89 [ test_8s::divisor#0 ] +Uplifting [test_8s] best 41407 combination zp ZP_BYTE:89 [ test_8s::divisor#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:124 [ test_8u::res#0 ] +Uplifting [test_8u] best 41407 combination zp ZP_BYTE:124 [ test_8u::res#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:93 [ test_8s::res#0 ] +Uplifting [test_8s] best 41407 combination zp ZP_BYTE:93 [ test_8s::res#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:91 [ div8s::divisor#0 ] +Uplifting [div8s] best 41372 combination reg byte x [ div8s::divisor#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:97 [ div8s::$5 ] +Uplifting [div8s] best 41368 combination reg byte a [ div8s::$5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:96 [ div8s::$8 ] +Uplifting [div8s] best 41364 combination reg byte x [ div8s::$8 ] +Attempting to uplift remaining variables inzp ZP_BYTE:95 [ div8s::resultu#0 ] +Uplifting [div8s] best 41361 combination reg byte y [ div8s::resultu#0 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] ] with [ zp ZP_WORD:78 [ divr16s::resultu#0 ] ] - score: 2 +Coalescing zero page register with common assignment [ zp ZP_WORD:24 [ rem16s#11 rem16s#2 rem16s#37 ] ] with [ zp ZP_WORD:86 [ rem16u#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 ] ] with [ zp ZP_WORD:7 [ print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] ] with [ zp ZP_WORD:52 [ test_16s::dividend#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 ] ] with [ zp ZP_WORD:53 [ test_16s::dividend#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 ] ] with [ zp ZP_BYTE:36 [ print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] ] with [ zp ZP_BYTE:117 [ test_8u::dividend#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 ] ] with [ zp ZP_BYTE:121 [ test_8u::dividend#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 ] ] with [ zp ZP_WORD:30 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] ] with [ zp ZP_WORD:66 [ divr16s::dividend#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 divr16s::dividend#0 ] ] with [ zp ZP_WORD:80 [ divr16s::$8 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 ] ] with [ zp ZP_WORD:68 [ divr16s::dividend#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 divr16s::dividend#0 ] ] with [ zp ZP_WORD:82 [ divr16s::$8 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:17 [ divr16s::remu#3 ] ] with [ zp ZP_WORD:28 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:19 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] ] with [ zp ZP_WORD:26 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:19 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] ] with [ zp ZP_WORD:68 [ divr16s::divisor#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:19 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 divr16s::divisor#0 ] ] with [ zp ZP_WORD:78 [ divr16s::$13 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 ] ] with [ zp ZP_WORD:70 [ divr16s::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:32 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:74 [ divr16u::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:32 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 ] ] with [ zp ZP_WORD:113 [ divr16u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:54 [ test_16s::divisor#0 ] ] with [ zp ZP_WORD:58 [ div16s::divisor#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:60 [ div16s::return#2 ] ] with [ zp ZP_WORD:62 [ test_16s::res#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:60 [ div16s::return#2 test_16s::res#0 ] ] with [ zp ZP_WORD:72 [ div16s::return#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:101 [ test_16u::dividend#0 ] ] with [ zp ZP_WORD:105 [ div16u::dividend#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:103 [ test_16u::divisor#0 ] ] with [ zp ZP_WORD:107 [ div16u::divisor#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:109 [ div16u::return#2 ] ] with [ zp ZP_WORD:111 [ test_16u::res#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:109 [ div16u::return#2 test_16u::res#0 ] ] with [ zp ZP_WORD:115 [ div16u::return#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 test_16s::dividend#0 ] ] with [ zp ZP_WORD:56 [ div16s::dividend#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 test_16s::dividend#0 div16s::dividend#0 ] ] with [ zp ZP_WORD:101 [ test_16u::dividend#0 div16u::dividend#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 test_8u::dividend#0 ] ] with [ zp ZP_BYTE:86 [ test_8s::dividend#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:19 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] ] with [ zp ZP_WORD:70 [ divr16s::divisor#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:19 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 divr16s::divisor#0 ] ] with [ zp ZP_WORD:80 [ divr16s::$13 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 ] ] with [ zp ZP_WORD:72 [ divr16s::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:32 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:76 [ divr16u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:32 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 ] ] with [ zp ZP_WORD:117 [ divr16u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:56 [ test_16s::divisor#0 ] ] with [ zp ZP_WORD:60 [ div16s::divisor#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:62 [ div16s::return#2 ] ] with [ zp ZP_WORD:64 [ test_16s::res#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:62 [ div16s::return#2 test_16s::res#0 ] ] with [ zp ZP_WORD:74 [ div16s::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:104 [ test_16u::dividend#0 ] ] with [ zp ZP_WORD:109 [ div16u::dividend#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:107 [ test_16u::divisor#0 ] ] with [ zp ZP_WORD:111 [ div16u::divisor#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:113 [ div16u::return#2 ] ] with [ zp ZP_WORD:115 [ test_16u::res#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:113 [ div16u::return#2 test_16u::res#0 ] ] with [ zp ZP_WORD:119 [ div16u::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 test_16s::dividend#0 ] ] with [ zp ZP_WORD:58 [ div16s::dividend#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 test_16s::dividend#0 div16s::dividend#0 ] ] with [ zp ZP_WORD:104 [ test_16u::dividend#0 div16u::dividend#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:9 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 test_8u::dividend#0 ] ] with [ zp ZP_BYTE:88 [ test_8s::dividend#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:17 [ divr16s::remu#3 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:24 [ rem16s#11 rem16s#2 rem16s#37 rem16u#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:19 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 divr16s::divisor#0 divr16s::$13 ] ] with [ zp ZP_WORD:103 [ test_16u::divisor#0 div16u::divisor#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:19 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 divr16s::divisor#0 divr16s::$13 ] ] with [ zp ZP_WORD:107 [ test_16u::divisor#0 div16u::divisor#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 ] ] with [ zp ZP_WORD:32 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#2 ] ] with [ zp ZP_WORD:60 [ div16s::return#2 test_16s::res#0 div16s::return#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#2 div16s::return#2 test_16s::res#0 div16s::return#0 ] ] with [ zp ZP_WORD:109 [ div16u::return#2 test_16u::res#0 div16u::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#2 ] ] with [ zp ZP_WORD:62 [ div16s::return#2 test_16s::res#0 div16s::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#2 div16s::return#2 test_16s::res#0 div16s::return#0 ] ] with [ zp ZP_WORD:113 [ div16u::return#2 test_16u::res#0 div16u::return#0 ] ] - score: 1 Coalescing zero page register [ zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 ] ] with [ zp ZP_BYTE:35 [ test_8s::i#10 test_8s::i#1 ] ] Coalescing zero page register [ zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 test_8s::i#10 test_8s::i#1 ] ] with [ zp ZP_BYTE:48 [ test_16u::i#10 test_16u::i#1 ] ] Coalescing zero page register [ zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 test_8s::i#10 test_8s::i#1 test_16u::i#10 test_16u::i#1 ] ] with [ zp ZP_BYTE:49 [ test_8u::i#10 test_8u::i#1 ] ] Coalescing zero page register [ zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 ] ] with [ zp ZP_WORD:50 [ print_cls::sc#2 print_cls::sc#1 ] ] Coalescing zero page register [ zp ZP_WORD:5 [ print_sword::w#6 print_sword::w#5 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#4 print_sword::w#0 print_word::w#5 print_word::w#7 print_word::w#1 print_word::w#2 print_word::w#3 print_word::w#4 test_16s::dividend#0 div16s::dividend#0 test_16u::dividend#0 div16u::dividend#0 ] ] with [ zp ZP_WORD:13 [ print_str::str#13 print_str::str#15 print_str::str#0 ] ] Coalescing zero page register [ zp ZP_WORD:11 [ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#159 print_char_cursor#128 print_char_cursor#18 print_char_cursor#166 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#184 print_char_cursor#188 ] ] with [ zp ZP_WORD:15 [ divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 divr16s::dividend#0 divr16s::$8 ] ] -Coalescing zero page register [ zp ZP_BYTE:39 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] ] with [ zp ZP_BYTE:91 [ test_8s::res#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:39 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 test_8s::res#0 ] ] with [ zp ZP_BYTE:118 [ test_8u::divisor#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:45 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] ] with [ zp ZP_BYTE:120 [ test_8u::res#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:39 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 ] ] with [ zp ZP_BYTE:93 [ test_8s::res#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:39 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 test_8s::res#0 ] ] with [ zp ZP_BYTE:122 [ test_8u::divisor#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:45 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 ] ] with [ zp ZP_BYTE:124 [ test_8u::res#0 ] ] Allocated (was zp ZP_BYTE:9) zp ZP_BYTE:7 [ print_byte::b#7 print_byte::b#9 print_byte::b#1 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#6 print_sbyte::b#7 print_sbyte::b#0 print_sbyte::b#10 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#3 print_sbyte::b#4 test_8u::dividend#0 test_8s::dividend#0 ] Allocated (was zp ZP_WORD:11) zp ZP_WORD:8 [ print_char_cursor#82 print_char_cursor#136 print_char_cursor#135 print_char_cursor#130 print_char_cursor#131 print_char_cursor#159 print_char_cursor#128 print_char_cursor#18 print_char_cursor#166 print_char_cursor#138 print_char_cursor#132 print_char_cursor#1 print_char_cursor#184 print_char_cursor#188 divr16s::dividendu#3 divr16s::dividendu#7 divr16s::dividendu#8 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 divr16s::dividend#0 divr16s::$8 ] Allocated (was zp ZP_WORD:17) zp ZP_WORD:10 [ divr16s::remu#3 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16s#11 rem16s#2 rem16s#37 rem16u#1 ] @@ -6878,9 +6946,9 @@ Allocated (was zp ZP_WORD:22) zp ZP_WORD:14 [ divr16s::return#2 divr16s::return# Allocated (was zp ZP_BYTE:39) zp ZP_BYTE:16 [ div8s::neg#4 div8s::neg#2 div8s::neg#3 test_8s::res#0 test_8u::divisor#0 ] Allocated (was zp ZP_BYTE:45) zp ZP_BYTE:17 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 test_8u::res#0 ] Allocated (was zp ZP_BYTE:46) zp ZP_BYTE:18 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] -Allocated (was zp ZP_WORD:54) zp ZP_WORD:19 [ test_16s::divisor#0 div16s::divisor#0 ] -Allocated (was zp ZP_BYTE:87) zp ZP_BYTE:21 [ test_8s::divisor#0 ] -Allocated (was zp ZP_BYTE:96) zp ZP_BYTE:22 [ divr8u::divisor#0 ] +Allocated (was zp ZP_WORD:56) zp ZP_WORD:19 [ test_16s::divisor#0 div16s::divisor#0 ] +Allocated (was zp ZP_BYTE:89) zp ZP_BYTE:21 [ test_8s::divisor#0 ] +Allocated (was zp ZP_BYTE:98) zp ZP_BYTE:22 [ divr8u::divisor#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -6913,7 +6981,7 @@ bend: //SEG10 main main: { //SEG11 [5] call print_cls - //SEG12 [282] phi from main to print_cls [phi:main->print_cls] + //SEG12 [286] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] @@ -6922,7 +6990,7 @@ main: { //SEG14 main::@1 b1: //SEG15 [7] call test_8u - //SEG16 [253] phi from main::@1 to test_8u [phi:main::@1->test_8u] + //SEG16 [257] phi from main::@1 to test_8u [phi:main::@1->test_8u] test_8u_from_b1: jsr test_8u //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -6931,7 +6999,7 @@ main: { //SEG18 main::@2 b2: //SEG19 [9] call test_16u - //SEG20 [218] phi from main::@2 to test_16u [phi:main::@2->test_16u] + //SEG20 [220] phi from main::@2 to test_16u [phi:main::@2->test_16u] test_16u_from_b2: jsr test_16u //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] @@ -6940,7 +7008,7 @@ main: { //SEG22 main::@3 b3: //SEG23 [11] call test_8s - //SEG24 [131] phi from main::@3 to test_8s [phi:main::@3->test_8s] + //SEG24 [133] phi from main::@3 to test_8s [phi:main::@3->test_8s] test_8s_from_b3: jsr test_8s //SEG25 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] @@ -6976,164 +7044,167 @@ test_16s: { jmp b1 //SEG36 test_16s::@1 b1: - //SEG37 [17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 - ldy i + //SEG37 [17] (byte) test_16s::$16 ← (byte) test_16s::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + lda i + asl + //SEG38 [18] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::$16) -- vwsz1=pwsc1_derefidx_vbuaa + tay lda dividends,y sta dividend lda dividends+1,y sta dividend+1 - //SEG38 [18] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 - ldy i + //SEG39 [19] (byte) test_16s::$17 ← (byte) test_16s::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + lda i + asl + //SEG40 [20] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::$17) -- vwsz1=pwsc1_derefidx_vbuaa + tay lda divisors,y sta divisor lda divisors+1,y sta divisor+1 - //SEG39 [19] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 - //SEG40 [20] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 - //SEG41 [21] call div16s + //SEG41 [21] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 + //SEG42 [22] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 + //SEG43 [23] call div16s jsr div16s - //SEG42 [22] (signed word) div16s::return#2 ← (signed word) div16s::return#0 + //SEG44 [24] (signed word) div16s::return#2 ← (signed word) div16s::return#0 jmp b2 - //SEG43 test_16s::@2 + //SEG45 test_16s::@2 b2: - //SEG44 [23] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 - //SEG45 [24] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 - //SEG46 [25] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG46 [25] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 + //SEG47 [26] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 + //SEG48 [27] (byte*~) print_char_cursor#159 ← (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 - //SEG47 [26] call print_sword - //SEG48 [49] phi from test_16s::@2 to print_sword [phi:test_16s::@2->print_sword] + //SEG49 [28] call print_sword + //SEG50 [51] phi from test_16s::@2 to print_sword [phi:test_16s::@2->print_sword] print_sword_from_b2: - //SEG49 [49] phi (byte*) print_char_cursor#131 = (byte*~) print_char_cursor#159 [phi:test_16s::@2->print_sword#0] -- register_copy - //SEG50 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#1 [phi:test_16s::@2->print_sword#1] -- register_copy + //SEG51 [51] phi (byte*) print_char_cursor#131 = (byte*~) print_char_cursor#159 [phi:test_16s::@2->print_sword#0] -- register_copy + //SEG52 [51] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#1 [phi:test_16s::@2->print_sword#1] -- register_copy jsr print_sword - //SEG51 [27] phi from test_16s::@2 to test_16s::@3 [phi:test_16s::@2->test_16s::@3] + //SEG53 [29] phi from test_16s::@2 to test_16s::@3 [phi:test_16s::@2->test_16s::@3] b3_from_b2: jmp b3 - //SEG52 test_16s::@3 + //SEG54 test_16s::@3 b3: - //SEG53 [28] call print_str - //SEG54 [76] phi from test_16s::@3 to print_str [phi:test_16s::@3->print_str] + //SEG55 [30] call print_str + //SEG56 [78] phi from test_16s::@3 to print_str [phi:test_16s::@3->print_str] print_str_from_b3: - //SEG55 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_16s::@3->print_str#0] -- pbuz1=pbuc1 + //SEG57 [78] phi (byte*) print_str::str#15 = (const string) str [phi:test_16s::@3->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b4 - //SEG56 test_16s::@4 + //SEG58 test_16s::@4 b4: - //SEG57 [29] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 -- vwsz1=vwsz2 + //SEG59 [31] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 -- vwsz1=vwsz2 lda divisor sta print_sword.w lda divisor+1 sta print_sword.w+1 - //SEG58 [30] call print_sword - //SEG59 [49] phi from test_16s::@4 to print_sword [phi:test_16s::@4->print_sword] + //SEG60 [32] call print_sword + //SEG61 [51] phi from test_16s::@4 to print_sword [phi:test_16s::@4->print_sword] print_sword_from_b4: - //SEG60 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@4->print_sword#0] -- register_copy - //SEG61 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#2 [phi:test_16s::@4->print_sword#1] -- register_copy + //SEG62 [51] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@4->print_sword#0] -- register_copy + //SEG63 [51] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#2 [phi:test_16s::@4->print_sword#1] -- register_copy jsr print_sword - //SEG62 [31] phi from test_16s::@4 to test_16s::@5 [phi:test_16s::@4->test_16s::@5] + //SEG64 [33] phi from test_16s::@4 to test_16s::@5 [phi:test_16s::@4->test_16s::@5] b5_from_b4: jmp b5 - //SEG63 test_16s::@5 + //SEG65 test_16s::@5 b5: - //SEG64 [32] call print_str - //SEG65 [76] phi from test_16s::@5 to print_str [phi:test_16s::@5->print_str] + //SEG66 [34] call print_str + //SEG67 [78] phi from test_16s::@5 to print_str [phi:test_16s::@5->print_str] print_str_from_b5: - //SEG66 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16s::@5->print_str#0] -- pbuz1=pbuc1 + //SEG68 [78] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16s::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b6 - //SEG67 test_16s::@6 + //SEG69 test_16s::@6 b6: - //SEG68 [33] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 -- vwsz1=vwsz2 + //SEG70 [35] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 -- vwsz1=vwsz2 lda res sta print_sword.w lda res+1 sta print_sword.w+1 - //SEG69 [34] call print_sword - //SEG70 [49] phi from test_16s::@6 to print_sword [phi:test_16s::@6->print_sword] + //SEG71 [36] call print_sword + //SEG72 [51] phi from test_16s::@6 to print_sword [phi:test_16s::@6->print_sword] print_sword_from_b6: - //SEG71 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@6->print_sword#0] -- register_copy - //SEG72 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:test_16s::@6->print_sword#1] -- register_copy + //SEG73 [51] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@6->print_sword#0] -- register_copy + //SEG74 [51] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:test_16s::@6->print_sword#1] -- register_copy jsr print_sword - //SEG73 [35] phi from test_16s::@6 to test_16s::@7 [phi:test_16s::@6->test_16s::@7] + //SEG75 [37] phi from test_16s::@6 to test_16s::@7 [phi:test_16s::@6->test_16s::@7] b7_from_b6: jmp b7 - //SEG74 test_16s::@7 + //SEG76 test_16s::@7 b7: - //SEG75 [36] call print_str - //SEG76 [76] phi from test_16s::@7 to print_str [phi:test_16s::@7->print_str] + //SEG77 [38] call print_str + //SEG78 [78] phi from test_16s::@7 to print_str [phi:test_16s::@7->print_str] print_str_from_b7: - //SEG77 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16s::@7->print_str#0] -- pbuz1=pbuc1 + //SEG79 [78] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16s::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b8 - //SEG78 test_16s::@8 + //SEG80 test_16s::@8 b8: - //SEG79 [37] (signed word) print_sword::w#4 ← (signed word) rem16s#11 -- vwsz1=vwsz2 + //SEG81 [39] (signed word) print_sword::w#4 ← (signed word) rem16s#11 -- vwsz1=vwsz2 lda rem16s sta print_sword.w lda rem16s+1 sta print_sword.w+1 - //SEG80 [38] call print_sword - //SEG81 [49] phi from test_16s::@8 to print_sword [phi:test_16s::@8->print_sword] + //SEG82 [40] call print_sword + //SEG83 [51] phi from test_16s::@8 to print_sword [phi:test_16s::@8->print_sword] print_sword_from_b8: - //SEG82 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@8->print_sword#0] -- register_copy - //SEG83 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:test_16s::@8->print_sword#1] -- register_copy + //SEG84 [51] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@8->print_sword#0] -- register_copy + //SEG85 [51] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:test_16s::@8->print_sword#1] -- register_copy jsr print_sword - //SEG84 [39] phi from test_16s::@8 to test_16s::@9 [phi:test_16s::@8->test_16s::@9] + //SEG86 [41] phi from test_16s::@8 to test_16s::@9 [phi:test_16s::@8->test_16s::@9] b9_from_b8: jmp b9 - //SEG85 test_16s::@9 + //SEG87 test_16s::@9 b9: - //SEG86 [40] call print_ln - //SEG87 [44] phi from test_16s::@9 to print_ln [phi:test_16s::@9->print_ln] + //SEG88 [42] call print_ln + //SEG89 [46] phi from test_16s::@9 to print_ln [phi:test_16s::@9->print_ln] print_ln_from_b9: - //SEG88 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16s::@9->print_ln#0] -- register_copy + //SEG90 [46] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16s::@9->print_ln#0] -- register_copy jsr print_ln jmp b10 - //SEG89 test_16s::@10 + //SEG91 test_16s::@10 b10: - //SEG90 [41] (byte) test_16s::i#1 ← (byte) test_16s::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 - lda i - clc - adc #2 - sta i - //SEG91 [42] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $c) goto test_16s::@1 -- vbuz1_neq_vbuc1_then_la1 - lda #$c + //SEG92 [43] (byte) test_16s::i#1 ← ++ (byte) test_16s::i#10 -- vbuz1=_inc_vbuz1 + inc i + //SEG93 [44] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_16s::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #6 cmp i bne b1_from_b10 jmp breturn - //SEG92 test_16s::@return + //SEG94 test_16s::@return breturn: - //SEG93 [43] return + //SEG95 [45] return rts dividends: .word $7fff, $7fff, -$7fff, -$7fff, $7fff, -$7fff divisors: .word 5, -7, $b, -$d, -$11, $13 } -//SEG94 print_ln +//SEG96 print_ln // Print a newline print_ln: { - //SEG95 [45] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG97 [47] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] b1_from_print_ln: b1_from_b1: - //SEG96 [45] phi (byte*) print_line_cursor#20 = (byte*) print_line_cursor#39 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG98 [47] phi (byte*) print_line_cursor#20 = (byte*) print_line_cursor#39 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG97 print_ln::@1 + //SEG99 print_ln::@1 b1: - //SEG98 [46] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG100 [48] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc print_line_cursor @@ -7141,7 +7212,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG99 [47] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG101 [49] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -7151,35 +7222,35 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG100 print_ln::@return + //SEG102 print_ln::@return breturn: - //SEG101 [48] return + //SEG103 [50] return rts } -//SEG102 print_sword +//SEG104 print_sword // Print a signed word as HEX // print_sword(signed word zeropage(5) w) print_sword: { .label w = 5 - //SEG103 [50] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG105 [52] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1_from_print_sword - //SEG104 [51] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG106 [53] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] b2_from_print_sword: jmp b2 - //SEG105 print_sword::@2 + //SEG107 print_sword::@2 b2: - //SEG106 [52] call print_char - //SEG107 [72] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG108 [54] call print_char + //SEG109 [74] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] print_char_from_b2: - //SEG108 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#131 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG109 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG110 [74] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#131 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG111 [74] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b3 - //SEG110 print_sword::@3 + //SEG112 print_sword::@3 b3: - //SEG111 [53] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1 + //SEG113 [55] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -7189,161 +7260,161 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG112 [54] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] + //SEG114 [56] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] b1_from_print_sword: b1_from_b3: - //SEG113 [54] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#131 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG114 [54] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#5 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy + //SEG115 [56] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#131 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy + //SEG116 [56] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#5 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy jmp b1 - //SEG115 print_sword::@1 + //SEG117 print_sword::@1 b1: - //SEG116 [55] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 - //SEG117 [56] call print_word - //SEG118 [58] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] + //SEG118 [57] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 + //SEG119 [58] call print_word + //SEG120 [60] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] print_word_from_b1: - //SEG119 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG120 [58] phi (word) print_word::w#5 = (word~) print_word::w#7 [phi:print_sword::@1->print_word#1] -- register_copy + //SEG121 [60] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy + //SEG122 [60] phi (word) print_word::w#5 = (word~) print_word::w#7 [phi:print_sword::@1->print_word#1] -- register_copy jsr print_word jmp breturn - //SEG121 print_sword::@return + //SEG123 print_sword::@return breturn: - //SEG122 [57] return + //SEG124 [59] return rts } -//SEG123 print_word +//SEG125 print_word // Print a word as HEX // print_word(word zeropage(5) w) print_word: { .label w = 5 - //SEG124 [59] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 + //SEG126 [61] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG125 [60] call print_byte - //SEG126 [64] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG127 [62] call print_byte + //SEG128 [66] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG127 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy - //SEG128 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + //SEG129 [66] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy + //SEG130 [66] phi (byte) print_byte::b#7 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG129 print_word::@1 + //SEG131 print_word::@1 b1: - //SEG130 [61] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 + //SEG132 [63] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG131 [62] call print_byte - //SEG132 [64] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG133 [64] call print_byte + //SEG134 [66] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG133 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG134 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG135 [66] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG136 [66] phi (byte) print_byte::b#7 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG135 print_word::@return + //SEG137 print_word::@return breturn: - //SEG136 [63] return + //SEG138 [65] return rts } -//SEG137 print_byte +//SEG139 print_byte // Print a byte as HEX // print_byte(byte zeropage(7) b) print_byte: { .label b = 7 - //SEG138 [65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 + //SEG140 [67] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG139 [66] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG141 [68] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG140 [67] call print_char - //SEG141 [72] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG142 [69] call print_char + //SEG143 [74] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG142 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy - //SEG143 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy + //SEG144 [74] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy + //SEG145 [74] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG144 print_byte::@1 + //SEG146 print_byte::@1 b1: - //SEG145 [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) $f -- vbuaa=vbuz1_band_vbuc1 + //SEG147 [70] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) $f -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG146 [69] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG148 [71] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG147 [70] call print_char - //SEG148 [72] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG149 [72] call print_char + //SEG150 [74] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG149 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG150 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG151 [74] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG152 [74] 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 - //SEG151 print_byte::@return + //SEG153 print_byte::@return breturn: - //SEG152 [71] return + //SEG154 [73] return rts } -//SEG153 print_char +//SEG155 print_char // Print a single char // print_char(byte register(A) ch) print_char: { - //SEG154 [73] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa + //SEG156 [75] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG155 [74] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 -- pbuz1=_inc_pbuz1 + //SEG157 [76] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG156 print_char::@return + //SEG158 print_char::@return breturn: - //SEG157 [75] return + //SEG159 [77] return rts } -//SEG158 print_str +//SEG160 print_str // Print a zero-terminated string // print_str(byte* zeropage(5) str) print_str: { .label str = 5 - //SEG159 [77] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG161 [79] 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: - //SEG160 [77] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#18 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG161 [77] phi (byte*) print_str::str#13 = (byte*) print_str::str#15 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG162 [79] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#18 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG163 [79] phi (byte*) print_str::str#13 = (byte*) print_str::str#15 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy jmp b1 - //SEG162 print_str::@1 + //SEG164 print_str::@1 b1: - //SEG163 [78] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG165 [80] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 jmp breturn - //SEG164 print_str::@return + //SEG166 print_str::@return breturn: - //SEG165 [79] return + //SEG167 [81] return rts - //SEG166 print_str::@2 + //SEG168 print_str::@2 b2: - //SEG167 [80] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) -- _deref_pbuz1=_deref_pbuz2 + //SEG169 [82] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y ldy #0 sta (print_char_cursor),y - //SEG168 [81] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 + //SEG170 [83] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG169 [82] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 -- pbuz1=_inc_pbuz1 + //SEG171 [84] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1_from_b2 } -//SEG170 div16s +//SEG172 div16s // Perform division on two signed 16-bit numbers // Returns dividend/divisor. // The remainder will be set into the global variable rem16s. @@ -7355,30 +7426,30 @@ div16s: { .label return = $e .label dividend = 5 .label divisor = $13 - //SEG171 [83] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 -- vwsz1=vwsz2 + //SEG173 [85] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 -- vwsz1=vwsz2 lda dividend sta divr16s.dividend lda dividend+1 sta divr16s.dividend+1 - //SEG172 [84] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 -- vwsz1=vwsz2 + //SEG174 [86] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 -- vwsz1=vwsz2 lda divisor sta divr16s.divisor lda divisor+1 sta divr16s.divisor+1 - //SEG173 [85] call divr16s + //SEG175 [87] call divr16s jsr divr16s - //SEG174 [86] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + //SEG176 [88] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 jmp b1 - //SEG175 div16s::@1 + //SEG177 div16s::@1 b1: - //SEG176 [87] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 + //SEG178 [89] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 jmp breturn - //SEG177 div16s::@return + //SEG179 div16s::@return breturn: - //SEG178 [88] return + //SEG180 [90] return rts } -//SEG179 divr16s +//SEG181 divr16s // Perform division on two signed 16-bit numbers with an initial remainder. // Returns dividend/divisor. The remainder will be set into the global variable rem16s. // Implemented using simple binary division @@ -7396,63 +7467,63 @@ divr16s: { .label dividendu = 8 .label divisoru = $c .label remu = $a - //SEG180 [89] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 + //SEG182 [91] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 lda dividend+1 bmi b1 jmp b7 - //SEG181 divr16s::@7 + //SEG183 divr16s::@7 b7: - //SEG182 [90] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 - //SEG183 [91] phi from divr16s::@7 to divr16s::@2 [phi:divr16s::@7->divr16s::@2] + //SEG184 [92] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 + //SEG185 [93] phi from divr16s::@7 to divr16s::@2 [phi:divr16s::@7->divr16s::@2] b2_from_b7: - //SEG184 [91] phi (word) divr16s::remu#3 = ((word))(const signed word) divr16s::rem#0 [phi:divr16s::@7->divr16s::@2#0] -- vwuz1=vbuc1 + //SEG186 [93] phi (word) divr16s::remu#3 = ((word))(const signed word) divr16s::rem#0 [phi:divr16s::@7->divr16s::@2#0] -- vwuz1=vbuc1 lda #rem sta remu lda #0 sta remu+1 - //SEG185 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#8 [phi:divr16s::@7->divr16s::@2#1] -- register_copy - //SEG186 [91] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@7->divr16s::@2#2] -- vbuyy=vbuc1 + //SEG187 [93] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#8 [phi:divr16s::@7->divr16s::@2#1] -- register_copy + //SEG188 [93] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@7->divr16s::@2#2] -- vbuyy=vbuc1 ldy #0 jmp b2 - //SEG187 divr16s::@2 + //SEG189 divr16s::@2 b2: - //SEG188 [92] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 + //SEG190 [94] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 lda divisor+1 bmi b3 jmp b8 - //SEG189 divr16s::@8 + //SEG191 divr16s::@8 b8: - //SEG190 [93] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 - //SEG191 [94] phi from divr16s::@3 divr16s::@8 to divr16s::@4 [phi:divr16s::@3/divr16s::@8->divr16s::@4] + //SEG192 [95] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + //SEG193 [96] phi from divr16s::@3 divr16s::@8 to divr16s::@4 [phi:divr16s::@3/divr16s::@8->divr16s::@4] b4_from_b3: b4_from_b8: - //SEG192 [94] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@8->divr16s::@4#0] -- register_copy - //SEG193 [94] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@8->divr16s::@4#1] -- register_copy + //SEG194 [96] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@8->divr16s::@4#0] -- register_copy + //SEG195 [96] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@8->divr16s::@4#1] -- register_copy jmp b4 - //SEG194 divr16s::@4 + //SEG196 divr16s::@4 b4: - //SEG195 [95] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 - //SEG196 [96] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 - //SEG197 [97] (word) divr16u::rem#4 ← (word) divr16s::remu#3 - //SEG198 [98] call divr16u - //SEG199 [113] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] + //SEG197 [97] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 + //SEG198 [98] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 + //SEG199 [99] (word) divr16u::rem#4 ← (word) divr16s::remu#3 + //SEG200 [100] call divr16u + //SEG201 [115] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] divr16u_from_b4: - //SEG200 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:divr16s::@4->divr16u#0] -- register_copy - //SEG201 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#2 [phi:divr16s::@4->divr16u#1] -- register_copy - //SEG202 [113] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:divr16s::@4->divr16u#2] -- register_copy + //SEG202 [115] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:divr16s::@4->divr16u#0] -- register_copy + //SEG203 [115] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#2 [phi:divr16s::@4->divr16u#1] -- register_copy + //SEG204 [115] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:divr16s::@4->divr16u#2] -- register_copy jsr divr16u - //SEG203 [99] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG205 [101] (word) divr16u::return#3 ← (word) divr16u::return#0 jmp b6 - //SEG204 divr16s::@6 + //SEG206 divr16s::@6 b6: - //SEG205 [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 - //SEG206 [101] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@9 -- vbuyy_eq_0_then_la1 + //SEG207 [102] (word) divr16s::resultu#0 ← (word) divr16u::return#3 + //SEG208 [103] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@9 -- vbuyy_eq_0_then_la1 cpy #0 beq b9 jmp b5 - //SEG207 divr16s::@5 + //SEG209 divr16s::@5 b5: - //SEG208 [102] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 -- vwsz1=_neg_vwsz1 + //SEG210 [104] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 -- vwsz1=_neg_vwsz1 sec lda rem16s eor #$ff @@ -7462,7 +7533,7 @@ divr16s: { eor #$ff adc #0 sta rem16s+1 - //SEG209 [103] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 + //SEG211 [105] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 sec lda return eor #$ff @@ -7472,24 +7543,24 @@ divr16s: { eor #$ff adc #0 sta return+1 - //SEG210 [104] phi from divr16s::@5 divr16s::@9 to divr16s::@return [phi:divr16s::@5/divr16s::@9->divr16s::@return] + //SEG212 [106] phi from divr16s::@5 divr16s::@9 to divr16s::@return [phi:divr16s::@5/divr16s::@9->divr16s::@return] breturn_from_b5: breturn_from_b9: - //SEG211 [104] phi (signed word) rem16s#11 = (signed word) rem16s#2 [phi:divr16s::@5/divr16s::@9->divr16s::@return#0] -- register_copy - //SEG212 [104] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@5/divr16s::@9->divr16s::@return#1] -- register_copy + //SEG213 [106] phi (signed word) rem16s#11 = (signed word) rem16s#2 [phi:divr16s::@5/divr16s::@9->divr16s::@return#0] -- register_copy + //SEG214 [106] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@5/divr16s::@9->divr16s::@return#1] -- register_copy jmp breturn - //SEG213 divr16s::@return + //SEG215 divr16s::@return breturn: - //SEG214 [105] return + //SEG216 [107] return rts - //SEG215 divr16s::@9 + //SEG217 divr16s::@9 b9: - //SEG216 [106] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 - //SEG217 [107] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 + //SEG218 [108] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 + //SEG219 [109] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 jmp breturn_from_b9 - //SEG218 divr16s::@3 + //SEG220 divr16s::@3 b3: - //SEG219 [108] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 + //SEG221 [110] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 sec lda _13 eor #$ff @@ -7499,15 +7570,15 @@ divr16s: { eor #$ff adc #0 sta _13+1 - //SEG220 [109] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1 + //SEG222 [111] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1 tya eor #1 tay - //SEG221 [110] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 + //SEG223 [112] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 jmp b4_from_b3 - //SEG222 divr16s::@1 + //SEG224 divr16s::@1 b1: - //SEG223 [111] (signed word~) divr16s::$8 ← - (signed word) divr16s::dividend#0 -- vwsz1=_neg_vwsz1 + //SEG225 [113] (signed word~) divr16s::$8 ← - (signed word) divr16s::dividend#0 -- vwsz1=_neg_vwsz1 sec lda _8 eor #$ff @@ -7517,20 +7588,20 @@ divr16s: { eor #$ff adc #0 sta _8+1 - //SEG224 [112] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$8 - //SEG225 [91] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] + //SEG226 [114] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$8 + //SEG227 [93] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] b2_from_b1: - //SEG226 [91] phi (word) divr16s::remu#3 = ((word))-(const signed word) divr16s::rem#0 [phi:divr16s::@1->divr16s::@2#0] -- vwuz1=vbuc1 + //SEG228 [93] phi (word) divr16s::remu#3 = ((word))-(const signed word) divr16s::rem#0 [phi:divr16s::@1->divr16s::@2#0] -- vwuz1=vbuc1 lda #-rem sta remu lda #0 sta remu+1 - //SEG227 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#7 [phi:divr16s::@1->divr16s::@2#1] -- register_copy - //SEG228 [91] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuyy=vbuc1 + //SEG229 [93] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#7 [phi:divr16s::@1->divr16s::@2#1] -- register_copy + //SEG230 [93] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuyy=vbuc1 ldy #1 jmp b2 } -//SEG229 divr16u +//SEG231 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -7542,58 +7613,58 @@ divr16u: { .label quotient = $e .label return = $e .label divisor = $c - //SEG230 [114] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG232 [116] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG231 [114] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG233 [116] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG232 [114] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG234 [116] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #0 sta quotient lda #0 sta quotient+1 - //SEG233 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG234 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG235 [116] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG236 [116] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG235 [114] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG237 [116] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG236 [114] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG237 [114] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG238 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG239 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG238 [116] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG239 [116] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG240 [116] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG241 [116] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG240 divr16u::@1 + //SEG242 divr16u::@1 b1: - //SEG241 [115] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG243 [117] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG242 [116] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG244 [118] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG243 [117] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 -- vbuaa=vbuaa_band_vbuc1 + //SEG245 [119] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG244 [118] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG246 [120] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b1 jmp b4 - //SEG245 divr16u::@4 + //SEG247 divr16u::@4 b4: - //SEG246 [119] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG248 [121] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG247 [120] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG249 [122] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG248 [120] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG250 [122] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG249 divr16u::@2 + //SEG251 divr16u::@2 b2: - //SEG250 [121] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG252 [123] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG251 [122] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG253 [124] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG252 [123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + //SEG254 [125] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 lda rem+1 cmp divisor+1 bcc b3_from_b2 @@ -7603,14 +7674,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG253 divr16u::@5 + //SEG255 divr16u::@5 b5: - //SEG254 [124] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG256 [126] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG255 [125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 + //SEG257 [127] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -7618,238 +7689,238 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG256 [126] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG258 [128] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG257 [126] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG258 [126] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG259 [128] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG260 [128] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG259 divr16u::@3 + //SEG261 divr16u::@3 b3: - //SEG260 [127] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG262 [129] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG261 [128] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG263 [130] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b3 jmp b6 - //SEG262 divr16u::@6 + //SEG264 divr16u::@6 b6: - //SEG263 [129] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG265 [131] (word) rem16u#1 ← (word) divr16u::rem#11 jmp breturn - //SEG264 divr16u::@return + //SEG266 divr16u::@return breturn: - //SEG265 [130] return + //SEG267 [132] return rts } -//SEG266 test_8s +//SEG268 test_8s test_8s: { .label dividend = 7 .label divisor = $15 .label res = $10 .label i = 2 - //SEG267 [132] phi from test_8s to test_8s::@1 [phi:test_8s->test_8s::@1] + //SEG269 [134] phi from test_8s to test_8s::@1 [phi:test_8s->test_8s::@1] b1_from_test_8s: - //SEG268 [132] phi (byte) test_8s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8s->test_8s::@1#0] -- vbuz1=vbuc1 + //SEG270 [134] phi (byte) test_8s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8s->test_8s::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG269 [132] phi from test_8s::@10 to test_8s::@1 [phi:test_8s::@10->test_8s::@1] + //SEG271 [134] phi from test_8s::@10 to test_8s::@1 [phi:test_8s::@10->test_8s::@1] b1_from_b10: - //SEG270 [132] phi (byte) test_8s::i#10 = (byte) test_8s::i#1 [phi:test_8s::@10->test_8s::@1#0] -- register_copy + //SEG272 [134] phi (byte) test_8s::i#10 = (byte) test_8s::i#1 [phi:test_8s::@10->test_8s::@1#0] -- register_copy jmp b1 - //SEG271 test_8s::@1 + //SEG273 test_8s::@1 b1: - //SEG272 [133] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG274 [135] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend - //SEG273 [134] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG275 [136] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda divisors,y sta divisor - //SEG274 [135] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsyy=vbsz1 + //SEG276 [137] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsyy=vbsz1 ldy dividend - //SEG275 [136] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsxx=vbsz1 + //SEG277 [138] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsxx=vbsz1 ldx divisor - //SEG276 [137] call div8s + //SEG278 [139] call div8s jsr div8s - //SEG277 [138] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 + //SEG279 [140] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 jmp b2 - //SEG278 test_8s::@2 + //SEG280 test_8s::@2 b2: - //SEG279 [139] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 -- vbsz1=vbsaa + //SEG281 [141] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 -- vbsz1=vbsaa sta res - //SEG280 [140] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 - //SEG281 [141] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG282 [142] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 + //SEG283 [143] (byte*~) print_char_cursor#184 ← (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 - //SEG282 [142] call print_sbyte - //SEG283 [160] phi from test_8s::@2 to print_sbyte [phi:test_8s::@2->print_sbyte] + //SEG284 [144] call print_sbyte + //SEG285 [162] phi from test_8s::@2 to print_sbyte [phi:test_8s::@2->print_sbyte] print_sbyte_from_b2: - //SEG284 [160] phi (byte*) print_char_cursor#132 = (byte*~) print_char_cursor#184 [phi:test_8s::@2->print_sbyte#0] -- register_copy - //SEG285 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#1 [phi:test_8s::@2->print_sbyte#1] -- register_copy + //SEG286 [162] phi (byte*) print_char_cursor#132 = (byte*~) print_char_cursor#184 [phi:test_8s::@2->print_sbyte#0] -- register_copy + //SEG287 [162] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#1 [phi:test_8s::@2->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG286 [143] phi from test_8s::@2 to test_8s::@3 [phi:test_8s::@2->test_8s::@3] + //SEG288 [145] phi from test_8s::@2 to test_8s::@3 [phi:test_8s::@2->test_8s::@3] b3_from_b2: jmp b3 - //SEG287 test_8s::@3 + //SEG289 test_8s::@3 b3: - //SEG288 [144] call print_str - //SEG289 [76] phi from test_8s::@3 to print_str [phi:test_8s::@3->print_str] + //SEG290 [146] call print_str + //SEG291 [78] phi from test_8s::@3 to print_str [phi:test_8s::@3->print_str] print_str_from_b3: - //SEG290 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_8s::@3->print_str#0] -- pbuz1=pbuc1 + //SEG292 [78] phi (byte*) print_str::str#15 = (const string) str [phi:test_8s::@3->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b4 - //SEG291 test_8s::@4 + //SEG293 test_8s::@4 b4: - //SEG292 [145] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 + //SEG294 [147] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 lda divisor sta print_sbyte.b - //SEG293 [146] call print_sbyte - //SEG294 [160] phi from test_8s::@4 to print_sbyte [phi:test_8s::@4->print_sbyte] + //SEG295 [148] call print_sbyte + //SEG296 [162] phi from test_8s::@4 to print_sbyte [phi:test_8s::@4->print_sbyte] print_sbyte_from_b4: - //SEG295 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@4->print_sbyte#0] -- register_copy - //SEG296 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#2 [phi:test_8s::@4->print_sbyte#1] -- register_copy + //SEG297 [162] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@4->print_sbyte#0] -- register_copy + //SEG298 [162] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#2 [phi:test_8s::@4->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG297 [147] phi from test_8s::@4 to test_8s::@5 [phi:test_8s::@4->test_8s::@5] + //SEG299 [149] phi from test_8s::@4 to test_8s::@5 [phi:test_8s::@4->test_8s::@5] b5_from_b4: jmp b5 - //SEG298 test_8s::@5 + //SEG300 test_8s::@5 b5: - //SEG299 [148] call print_str - //SEG300 [76] phi from test_8s::@5 to print_str [phi:test_8s::@5->print_str] + //SEG301 [150] call print_str + //SEG302 [78] phi from test_8s::@5 to print_str [phi:test_8s::@5->print_str] print_str_from_b5: - //SEG301 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8s::@5->print_str#0] -- pbuz1=pbuc1 + //SEG303 [78] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8s::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b6 - //SEG302 test_8s::@6 + //SEG304 test_8s::@6 b6: - //SEG303 [149] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 -- vbsz1=vbsz2 + //SEG305 [151] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 -- vbsz1=vbsz2 lda res sta print_sbyte.b - //SEG304 [150] call print_sbyte - //SEG305 [160] phi from test_8s::@6 to print_sbyte [phi:test_8s::@6->print_sbyte] + //SEG306 [152] call print_sbyte + //SEG307 [162] phi from test_8s::@6 to print_sbyte [phi:test_8s::@6->print_sbyte] print_sbyte_from_b6: - //SEG306 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@6->print_sbyte#0] -- register_copy - //SEG307 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#3 [phi:test_8s::@6->print_sbyte#1] -- register_copy + //SEG308 [162] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@6->print_sbyte#0] -- register_copy + //SEG309 [162] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#3 [phi:test_8s::@6->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG308 [151] phi from test_8s::@6 to test_8s::@7 [phi:test_8s::@6->test_8s::@7] + //SEG310 [153] phi from test_8s::@6 to test_8s::@7 [phi:test_8s::@6->test_8s::@7] b7_from_b6: jmp b7 - //SEG309 test_8s::@7 + //SEG311 test_8s::@7 b7: - //SEG310 [152] call print_str - //SEG311 [76] phi from test_8s::@7 to print_str [phi:test_8s::@7->print_str] + //SEG312 [154] call print_str + //SEG313 [78] phi from test_8s::@7 to print_str [phi:test_8s::@7->print_str] print_str_from_b7: - //SEG312 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8s::@7->print_str#0] -- pbuz1=pbuc1 + //SEG314 [78] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8s::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b8 - //SEG313 test_8s::@8 + //SEG315 test_8s::@8 b8: - //SEG314 [153] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 -- vbsz1=vbsxx + //SEG316 [155] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 -- vbsz1=vbsxx stx print_sbyte.b - //SEG315 [154] call print_sbyte - //SEG316 [160] phi from test_8s::@8 to print_sbyte [phi:test_8s::@8->print_sbyte] + //SEG317 [156] call print_sbyte + //SEG318 [162] phi from test_8s::@8 to print_sbyte [phi:test_8s::@8->print_sbyte] print_sbyte_from_b8: - //SEG317 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@8->print_sbyte#0] -- register_copy - //SEG318 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#4 [phi:test_8s::@8->print_sbyte#1] -- register_copy + //SEG319 [162] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@8->print_sbyte#0] -- register_copy + //SEG320 [162] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#4 [phi:test_8s::@8->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG319 [155] phi from test_8s::@8 to test_8s::@9 [phi:test_8s::@8->test_8s::@9] + //SEG321 [157] phi from test_8s::@8 to test_8s::@9 [phi:test_8s::@8->test_8s::@9] b9_from_b8: jmp b9 - //SEG320 test_8s::@9 + //SEG322 test_8s::@9 b9: - //SEG321 [156] call print_ln - //SEG322 [44] phi from test_8s::@9 to print_ln [phi:test_8s::@9->print_ln] + //SEG323 [158] call print_ln + //SEG324 [46] phi from test_8s::@9 to print_ln [phi:test_8s::@9->print_ln] print_ln_from_b9: - //SEG323 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_8s::@9->print_ln#0] -- register_copy + //SEG325 [46] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_8s::@9->print_ln#0] -- register_copy jsr print_ln jmp b10 - //SEG324 test_8s::@10 + //SEG326 test_8s::@10 b10: - //SEG325 [157] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 -- vbuz1=_inc_vbuz1 + //SEG327 [159] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG326 [158] if((byte) test_8s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8s::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG328 [160] if((byte) test_8s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8s::@1 -- vbuz1_neq_vbuc1_then_la1 lda #6 cmp i bne b1_from_b10 jmp breturn - //SEG327 test_8s::@return + //SEG329 test_8s::@return breturn: - //SEG328 [159] return + //SEG330 [161] return rts dividends: .byte $7f, -$7f, -$7f, $7f, $7f, $7f divisors: .byte 5, 7, -$b, -$d, $11, $13 } -//SEG329 print_sbyte +//SEG331 print_sbyte // Print a signed byte as HEX // print_sbyte(signed byte zeropage(7) b) print_sbyte: { .label b = 7 - //SEG330 [161] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG332 [163] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1_from_print_sbyte - //SEG331 [162] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG333 [164] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] b3_from_print_sbyte: jmp b3 - //SEG332 print_sbyte::@3 + //SEG334 print_sbyte::@3 b3: - //SEG333 [163] call print_char - //SEG334 [72] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG335 [165] call print_char + //SEG336 [74] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] print_char_from_b3: - //SEG335 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG336 [72] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 + //SEG337 [74] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG338 [74] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG337 [164] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] + //SEG339 [166] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] b2_from_b3: b2_from_b4: - //SEG338 [164] phi (signed byte) print_sbyte::b#7 = (signed byte) print_sbyte::b#10 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy + //SEG340 [166] phi (signed byte) print_sbyte::b#7 = (signed byte) print_sbyte::b#10 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy jmp b2 - //SEG339 print_sbyte::@2 + //SEG341 print_sbyte::@2 b2: - //SEG340 [165] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#7 - //SEG341 [166] call print_byte - //SEG342 [64] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG342 [167] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#7 + //SEG343 [168] call print_byte + //SEG344 [66] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] print_byte_from_b2: - //SEG343 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG344 [64] phi (byte) print_byte::b#7 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG345 [66] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG346 [66] phi (byte) print_byte::b#7 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG345 print_sbyte::@return + //SEG347 print_sbyte::@return breturn: - //SEG346 [167] return + //SEG348 [169] return rts - //SEG347 [168] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG349 [170] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] b1_from_print_sbyte: jmp b1 - //SEG348 print_sbyte::@1 + //SEG350 print_sbyte::@1 b1: - //SEG349 [169] call print_char - //SEG350 [72] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG351 [171] call print_char + //SEG352 [74] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] print_char_from_b1: - //SEG351 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG352 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + //SEG353 [74] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG354 [74] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char jmp b4 - //SEG353 print_sbyte::@4 + //SEG355 print_sbyte::@4 b4: - //SEG354 [170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 -- vbsz1=_neg_vbsz1 + //SEG356 [172] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -7857,7 +7928,7 @@ print_sbyte: { sta b jmp b2_from_b4 } -//SEG355 div8s +//SEG357 div8s // Perform division on two signed 8-bit numbers // Returns dividend/divisor. // The remainder will be set into the global variable rem8s. @@ -7867,145 +7938,145 @@ print_sbyte: { // div8s(signed byte register(Y) dividend, signed byte register(X) divisor) div8s: { .label neg = $10 - //SEG356 [171] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1 -- vbsyy_lt_0_then_la1 + //SEG358 [173] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1 -- vbsyy_lt_0_then_la1 cpy #0 bmi b1 jmp b7 - //SEG357 div8s::@7 + //SEG359 div8s::@7 b7: - //SEG358 [172] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 - //SEG359 [173] phi from div8s::@7 to div8s::@2 [phi:div8s::@7->div8s::@2] + //SEG360 [174] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 + //SEG361 [175] phi from div8s::@7 to div8s::@2 [phi:div8s::@7->div8s::@2] b2_from_b7: - //SEG360 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#8 [phi:div8s::@7->div8s::@2#0] -- register_copy - //SEG361 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8s::@7->div8s::@2#1] -- vbuz1=vbuc1 + //SEG362 [175] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#8 [phi:div8s::@7->div8s::@2#0] -- register_copy + //SEG363 [175] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8s::@7->div8s::@2#1] -- vbuz1=vbuc1 lda #0 sta neg jmp b2 - //SEG362 div8s::@2 + //SEG364 div8s::@2 b2: - //SEG363 [174] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3 -- vbsxx_lt_0_then_la1 + //SEG365 [176] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3 -- vbsxx_lt_0_then_la1 cpx #0 bmi b3 jmp b8 - //SEG364 div8s::@8 + //SEG366 div8s::@8 b8: - //SEG365 [175] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 - //SEG366 [176] phi from div8s::@3 div8s::@8 to div8s::@4 [phi:div8s::@3/div8s::@8->div8s::@4] + //SEG367 [177] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 + //SEG368 [178] phi from div8s::@3 div8s::@8 to div8s::@4 [phi:div8s::@3/div8s::@8->div8s::@4] b4_from_b3: b4_from_b8: - //SEG367 [176] phi (byte) div8s::neg#4 = (byte) div8s::neg#2 [phi:div8s::@3/div8s::@8->div8s::@4#0] -- register_copy - //SEG368 [176] phi (byte) div8s::divisoru#3 = (byte~) div8s::divisoru#4 [phi:div8s::@3/div8s::@8->div8s::@4#1] -- register_copy + //SEG369 [178] phi (byte) div8s::neg#4 = (byte) div8s::neg#2 [phi:div8s::@3/div8s::@8->div8s::@4#0] -- register_copy + //SEG370 [178] phi (byte) div8s::divisoru#3 = (byte~) div8s::divisoru#4 [phi:div8s::@3/div8s::@8->div8s::@4#1] -- register_copy jmp b4 - //SEG369 div8s::@4 + //SEG371 div8s::@4 b4: - //SEG370 [177] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuaa=vbuyy + //SEG372 [179] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuaa=vbuyy tya - //SEG371 [178] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 - //SEG372 [179] call div8u - //SEG373 [194] phi from div8s::@4 to div8u [phi:div8s::@4->div8u] + //SEG373 [180] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 + //SEG374 [181] call div8u + //SEG375 [196] phi from div8s::@4 to div8u [phi:div8s::@4->div8u] div8u_from_b4: - //SEG374 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#0 [phi:div8s::@4->div8u#0] -- register_copy - //SEG375 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8s::@4->div8u#1] -- register_copy + //SEG376 [196] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#0 [phi:div8s::@4->div8u#0] -- register_copy + //SEG377 [196] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8s::@4->div8u#1] -- register_copy jsr div8u - //SEG376 [180] (byte) div8u::return#2 ← (byte) div8u::return#0 + //SEG378 [182] (byte) div8u::return#2 ← (byte) div8u::return#0 jmp b6 - //SEG377 div8s::@6 + //SEG379 div8s::@6 b6: - //SEG378 [181] (byte) div8s::resultu#0 ← (byte) div8u::return#2 -- vbuyy=vbuaa + //SEG380 [183] (byte) div8s::resultu#0 ← (byte) div8u::return#2 -- vbuyy=vbuaa tay - //SEG379 [182] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@9 -- vbuz1_eq_0_then_la1 + //SEG381 [184] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@9 -- vbuz1_eq_0_then_la1 lda neg cmp #0 beq b9 jmp b5 - //SEG380 div8s::@5 + //SEG382 div8s::@5 b5: - //SEG381 [183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 -- vbsxx=_neg_vbsxx + //SEG383 [185] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 -- vbsxx=_neg_vbsxx txa eor #$ff clc adc #1 tax - //SEG382 [184] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 -- vbsaa=_neg_vbsyy + //SEG384 [186] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 -- vbsaa=_neg_vbsyy tya eor #$ff clc adc #1 - //SEG383 [185] phi from div8s::@5 div8s::@9 to div8s::@return [phi:div8s::@5/div8s::@9->div8s::@return] + //SEG385 [187] phi from div8s::@5 div8s::@9 to div8s::@return [phi:div8s::@5/div8s::@9->div8s::@return] breturn_from_b5: breturn_from_b9: - //SEG384 [185] phi (signed byte) rem8s#3 = (signed byte) rem8s#2 [phi:div8s::@5/div8s::@9->div8s::@return#0] -- register_copy - //SEG385 [185] phi (signed byte) div8s::return#2 = (signed byte) div8s::return#1 [phi:div8s::@5/div8s::@9->div8s::@return#1] -- register_copy + //SEG386 [187] phi (signed byte) rem8s#3 = (signed byte) rem8s#2 [phi:div8s::@5/div8s::@9->div8s::@return#0] -- register_copy + //SEG387 [187] phi (signed byte) div8s::return#2 = (signed byte) div8s::return#1 [phi:div8s::@5/div8s::@9->div8s::@return#1] -- register_copy jmp breturn - //SEG386 div8s::@return + //SEG388 div8s::@return breturn: - //SEG387 [186] return + //SEG389 [188] return rts - //SEG388 div8s::@9 + //SEG390 div8s::@9 b9: - //SEG389 [187] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 -- vbsaa=vbsyy + //SEG391 [189] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 -- vbsaa=vbsyy tya - //SEG390 [188] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 + //SEG392 [190] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 jmp breturn_from_b9 - //SEG391 div8s::@3 + //SEG393 div8s::@3 b3: - //SEG392 [189] (signed byte~) div8s::$8 ← - (signed byte) div8s::divisor#0 -- vbsxx=_neg_vbsxx + //SEG394 [191] (signed byte~) div8s::$8 ← - (signed byte) div8s::divisor#0 -- vbsxx=_neg_vbsxx txa eor #$ff clc adc #1 tax - //SEG393 [190] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG395 [192] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 lda #1 eor neg sta neg - //SEG394 [191] (byte~) div8s::divisoru#4 ← (byte)(signed byte~) div8s::$8 + //SEG396 [193] (byte~) div8s::divisoru#4 ← (byte)(signed byte~) div8s::$8 jmp b4_from_b3 - //SEG395 div8s::@1 + //SEG397 div8s::@1 b1: - //SEG396 [192] (signed byte~) div8s::$5 ← - (signed byte) div8s::dividend#0 -- vbsaa=_neg_vbsyy + //SEG398 [194] (signed byte~) div8s::$5 ← - (signed byte) div8s::dividend#0 -- vbsaa=_neg_vbsyy tya eor #$ff clc adc #1 - //SEG397 [193] (byte~) div8s::dividendu#7 ← (byte)(signed byte~) div8s::$5 -- vbuyy=vbuaa + //SEG399 [195] (byte~) div8s::dividendu#7 ← (byte)(signed byte~) div8s::$5 -- vbuyy=vbuaa tay - //SEG398 [173] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2] + //SEG400 [175] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2] b2_from_b1: - //SEG399 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy - //SEG400 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:div8s::@1->div8s::@2#1] -- vbuz1=vbuc1 + //SEG401 [175] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy + //SEG402 [175] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:div8s::@1->div8s::@2#1] -- vbuz1=vbuc1 lda #1 sta neg jmp b2 } -//SEG401 div8u +//SEG403 div8u // Performs division on two 8 bit unsigned bytes // Returns dividend/divisor. // The remainder will be set into the global variable rem8u // Implemented using simple binary division // div8u(byte register(A) dividend, byte register(X) divisor) div8u: { - //SEG402 [195] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuaa + //SEG404 [197] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuaa sta divr8u.dividend - //SEG403 [196] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuxx + //SEG405 [198] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuxx stx divr8u.divisor - //SEG404 [197] call divr8u - //SEG405 [201] phi from div8u to divr8u [phi:div8u->divr8u] + //SEG406 [199] call divr8u + //SEG407 [203] phi from div8u to divr8u [phi:div8u->divr8u] divr8u_from_div8u: jsr divr8u - //SEG406 [198] (byte) divr8u::return#0 ← (byte) divr8u::return#1 -- vbuaa=vbuz1 + //SEG408 [200] (byte) divr8u::return#0 ← (byte) divr8u::return#1 -- vbuaa=vbuz1 lda divr8u.return jmp b1 - //SEG407 div8u::@1 + //SEG409 div8u::@1 b1: - //SEG408 [199] (byte) div8u::return#0 ← (byte) divr8u::return#0 + //SEG410 [201] (byte) div8u::return#0 ← (byte) divr8u::return#0 jmp breturn - //SEG409 div8u::@return + //SEG411 div8u::@return breturn: - //SEG410 [200] return + //SEG412 [202] return rts } -//SEG411 divr8u +//SEG413 divr8u // Performs division on two 8 bit unsigned bytes and an initial remainder // Returns dividend/divisor. // The final remainder will be set into the global variable rem8u @@ -8016,258 +8087,261 @@ divr8u: { .label divisor = $16 .label quotient = $12 .label return = $12 - //SEG412 [202] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1] + //SEG414 [204] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1] b1_from_divr8u: - //SEG413 [202] phi (byte) divr8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#0] -- vbuxx=vbuc1 + //SEG415 [204] phi (byte) divr8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG414 [202] phi (byte) divr8u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1 + //SEG416 [204] phi (byte) divr8u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1 lda #0 sta quotient - //SEG415 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#0 [phi:divr8u->divr8u::@1#2] -- register_copy - //SEG416 [202] phi (byte) divr8u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#3] -- vbuyy=vbuc1 + //SEG417 [204] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#0 [phi:divr8u->divr8u::@1#2] -- register_copy + //SEG418 [204] phi (byte) divr8u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#3] -- vbuyy=vbuc1 ldy #0 jmp b1 - //SEG417 [202] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1] + //SEG419 [204] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1] b1_from_b3: - //SEG418 [202] phi (byte) divr8u::i#2 = (byte) divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy - //SEG419 [202] phi (byte) divr8u::quotient#3 = (byte) divr8u::return#1 [phi:divr8u::@3->divr8u::@1#1] -- register_copy - //SEG420 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#1 [phi:divr8u::@3->divr8u::@1#2] -- register_copy - //SEG421 [202] phi (byte) divr8u::rem#4 = (byte) divr8u::rem#10 [phi:divr8u::@3->divr8u::@1#3] -- register_copy + //SEG420 [204] phi (byte) divr8u::i#2 = (byte) divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy + //SEG421 [204] phi (byte) divr8u::quotient#3 = (byte) divr8u::return#1 [phi:divr8u::@3->divr8u::@1#1] -- register_copy + //SEG422 [204] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#1 [phi:divr8u::@3->divr8u::@1#2] -- register_copy + //SEG423 [204] phi (byte) divr8u::rem#4 = (byte) divr8u::rem#10 [phi:divr8u::@3->divr8u::@1#3] -- register_copy jmp b1 - //SEG422 divr8u::@1 + //SEG424 divr8u::@1 b1: - //SEG423 [203] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_rol_1 + //SEG425 [205] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_rol_1 tya asl tay - //SEG424 [204] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) $80 -- vbuaa=vbuz1_band_vbuc1 + //SEG426 [206] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) $80 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and dividend - //SEG425 [205] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2 -- vbuaa_eq_0_then_la1 + //SEG427 [207] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b1 jmp b4 - //SEG426 divr8u::@4 + //SEG428 divr8u::@4 b4: - //SEG427 [206] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bor_vbuc1 + //SEG429 [208] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bor_vbuc1 tya ora #1 tay - //SEG428 [207] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2] + //SEG430 [209] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2] b2_from_b1: b2_from_b4: - //SEG429 [207] phi (byte) divr8u::rem#5 = (byte) divr8u::rem#1 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy + //SEG431 [209] phi (byte) divr8u::rem#5 = (byte) divr8u::rem#1 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy jmp b2 - //SEG430 divr8u::@2 + //SEG432 divr8u::@2 b2: - //SEG431 [208] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG433 [210] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl dividend - //SEG432 [209] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG434 [211] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl quotient - //SEG433 [210] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 -- vbuyy_lt_vbuz1_then_la1 + //SEG435 [212] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 -- vbuyy_lt_vbuz1_then_la1 cpy divisor bcc b3_from_b2 jmp b5 - //SEG434 divr8u::@5 + //SEG436 divr8u::@5 b5: - //SEG435 [211] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 -- vbuz1=_inc_vbuz1 + //SEG437 [213] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 -- vbuz1=_inc_vbuz1 inc quotient - //SEG436 [212] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 -- vbuyy=vbuyy_minus_vbuz1 + //SEG438 [214] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 -- vbuyy=vbuyy_minus_vbuz1 tya sec sbc divisor tay - //SEG437 [213] phi from divr8u::@2 divr8u::@5 to divr8u::@3 [phi:divr8u::@2/divr8u::@5->divr8u::@3] + //SEG439 [215] phi from divr8u::@2 divr8u::@5 to divr8u::@3 [phi:divr8u::@2/divr8u::@5->divr8u::@3] b3_from_b2: b3_from_b5: - //SEG438 [213] phi (byte) divr8u::return#1 = (byte) divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy - //SEG439 [213] phi (byte) divr8u::rem#10 = (byte) divr8u::rem#5 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy + //SEG440 [215] phi (byte) divr8u::return#1 = (byte) divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy + //SEG441 [215] phi (byte) divr8u::rem#10 = (byte) divr8u::rem#5 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy jmp b3 - //SEG440 divr8u::@3 + //SEG442 divr8u::@3 b3: - //SEG441 [214] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 -- vbuxx=_inc_vbuxx + //SEG443 [216] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG442 [215] if((byte) divr8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto divr8u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG444 [217] if((byte) divr8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto divr8u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1_from_b3 jmp b6 - //SEG443 divr8u::@6 + //SEG445 divr8u::@6 b6: - //SEG444 [216] (byte) rem8u#17 ← (byte) divr8u::rem#10 -- vbuxx=vbuyy + //SEG446 [218] (byte) rem8u#17 ← (byte) divr8u::rem#10 -- vbuxx=vbuyy tya tax jmp breturn - //SEG445 divr8u::@return + //SEG447 divr8u::@return breturn: - //SEG446 [217] return + //SEG448 [219] return rts } -//SEG447 test_16u +//SEG449 test_16u test_16u: { .label dividend = 5 .label divisor = $c .label res = $e .label i = 2 - //SEG448 [219] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] + //SEG450 [221] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] b1_from_test_16u: - //SEG449 [219] phi (byte) test_16u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#0] -- vbuz1=vbuc1 + //SEG451 [221] phi (byte) test_16u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG450 [219] phi from test_16u::@10 to test_16u::@1 [phi:test_16u::@10->test_16u::@1] + //SEG452 [221] phi from test_16u::@10 to test_16u::@1 [phi:test_16u::@10->test_16u::@1] b1_from_b10: - //SEG451 [219] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@10->test_16u::@1#0] -- register_copy + //SEG453 [221] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@10->test_16u::@1#0] -- register_copy jmp b1 - //SEG452 test_16u::@1 + //SEG454 test_16u::@1 b1: - //SEG453 [220] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 - ldy i + //SEG455 [222] (byte) test_16u::$10 ← (byte) test_16u::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + lda i + asl + //SEG456 [223] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::$10) -- vwuz1=pwuc1_derefidx_vbuaa + tay lda dividends,y sta dividend lda dividends+1,y sta dividend+1 - //SEG454 [221] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 - ldy i + //SEG457 [224] (byte) test_16u::$11 ← (byte) test_16u::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + lda i + asl + //SEG458 [225] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::$11) -- vwuz1=pwuc1_derefidx_vbuaa + tay lda divisors,y sta divisor lda divisors+1,y sta divisor+1 - //SEG455 [222] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 - //SEG456 [223] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 - //SEG457 [224] call div16u + //SEG459 [226] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 + //SEG460 [227] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 + //SEG461 [228] call div16u jsr div16u - //SEG458 [225] (word) div16u::return#2 ← (word) div16u::return#0 + //SEG462 [229] (word) div16u::return#2 ← (word) div16u::return#0 jmp b2 - //SEG459 test_16u::@2 + //SEG463 test_16u::@2 b2: - //SEG460 [226] (word) test_16u::res#0 ← (word) div16u::return#2 - //SEG461 [227] (word) print_word::w#1 ← (word) test_16u::dividend#0 - //SEG462 [228] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG464 [230] (word) test_16u::res#0 ← (word) div16u::return#2 + //SEG465 [231] (word) print_word::w#1 ← (word) test_16u::dividend#0 + //SEG466 [232] (byte*~) print_char_cursor#166 ← (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 - //SEG463 [229] call print_word - //SEG464 [58] phi from test_16u::@2 to print_word [phi:test_16u::@2->print_word] + //SEG467 [233] call print_word + //SEG468 [60] phi from test_16u::@2 to print_word [phi:test_16u::@2->print_word] print_word_from_b2: - //SEG465 [58] phi (byte*) print_char_cursor#135 = (byte*~) print_char_cursor#166 [phi:test_16u::@2->print_word#0] -- register_copy - //SEG466 [58] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:test_16u::@2->print_word#1] -- register_copy + //SEG469 [60] phi (byte*) print_char_cursor#135 = (byte*~) print_char_cursor#166 [phi:test_16u::@2->print_word#0] -- register_copy + //SEG470 [60] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:test_16u::@2->print_word#1] -- register_copy jsr print_word - //SEG467 [230] phi from test_16u::@2 to test_16u::@3 [phi:test_16u::@2->test_16u::@3] + //SEG471 [234] phi from test_16u::@2 to test_16u::@3 [phi:test_16u::@2->test_16u::@3] b3_from_b2: jmp b3 - //SEG468 test_16u::@3 + //SEG472 test_16u::@3 b3: - //SEG469 [231] call print_str - //SEG470 [76] phi from test_16u::@3 to print_str [phi:test_16u::@3->print_str] + //SEG473 [235] call print_str + //SEG474 [78] phi from test_16u::@3 to print_str [phi:test_16u::@3->print_str] print_str_from_b3: - //SEG471 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_16u::@3->print_str#0] -- pbuz1=pbuc1 + //SEG475 [78] phi (byte*) print_str::str#15 = (const string) str [phi:test_16u::@3->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b4 - //SEG472 test_16u::@4 + //SEG476 test_16u::@4 b4: - //SEG473 [232] (word) print_word::w#2 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 + //SEG477 [236] (word) print_word::w#2 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 lda divisor sta print_word.w lda divisor+1 sta print_word.w+1 - //SEG474 [233] call print_word - //SEG475 [58] phi from test_16u::@4 to print_word [phi:test_16u::@4->print_word] + //SEG478 [237] call print_word + //SEG479 [60] phi from test_16u::@4 to print_word [phi:test_16u::@4->print_word] print_word_from_b4: - //SEG476 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@4->print_word#0] -- register_copy - //SEG477 [58] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:test_16u::@4->print_word#1] -- register_copy + //SEG480 [60] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@4->print_word#0] -- register_copy + //SEG481 [60] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:test_16u::@4->print_word#1] -- register_copy jsr print_word - //SEG478 [234] phi from test_16u::@4 to test_16u::@5 [phi:test_16u::@4->test_16u::@5] + //SEG482 [238] phi from test_16u::@4 to test_16u::@5 [phi:test_16u::@4->test_16u::@5] b5_from_b4: jmp b5 - //SEG479 test_16u::@5 + //SEG483 test_16u::@5 b5: - //SEG480 [235] call print_str - //SEG481 [76] phi from test_16u::@5 to print_str [phi:test_16u::@5->print_str] + //SEG484 [239] call print_str + //SEG485 [78] phi from test_16u::@5 to print_str [phi:test_16u::@5->print_str] print_str_from_b5: - //SEG482 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16u::@5->print_str#0] -- pbuz1=pbuc1 + //SEG486 [78] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16u::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b6 - //SEG483 test_16u::@6 + //SEG487 test_16u::@6 b6: - //SEG484 [236] (word) print_word::w#3 ← (word) test_16u::res#0 -- vwuz1=vwuz2 + //SEG488 [240] (word) print_word::w#3 ← (word) test_16u::res#0 -- vwuz1=vwuz2 lda res sta print_word.w lda res+1 sta print_word.w+1 - //SEG485 [237] call print_word - //SEG486 [58] phi from test_16u::@6 to print_word [phi:test_16u::@6->print_word] + //SEG489 [241] call print_word + //SEG490 [60] phi from test_16u::@6 to print_word [phi:test_16u::@6->print_word] print_word_from_b6: - //SEG487 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@6->print_word#0] -- register_copy - //SEG488 [58] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:test_16u::@6->print_word#1] -- register_copy + //SEG491 [60] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@6->print_word#0] -- register_copy + //SEG492 [60] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:test_16u::@6->print_word#1] -- register_copy jsr print_word - //SEG489 [238] phi from test_16u::@6 to test_16u::@7 [phi:test_16u::@6->test_16u::@7] + //SEG493 [242] phi from test_16u::@6 to test_16u::@7 [phi:test_16u::@6->test_16u::@7] b7_from_b6: jmp b7 - //SEG490 test_16u::@7 + //SEG494 test_16u::@7 b7: - //SEG491 [239] call print_str - //SEG492 [76] phi from test_16u::@7 to print_str [phi:test_16u::@7->print_str] + //SEG495 [243] call print_str + //SEG496 [78] phi from test_16u::@7 to print_str [phi:test_16u::@7->print_str] print_str_from_b7: - //SEG493 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16u::@7->print_str#0] -- pbuz1=pbuc1 + //SEG497 [78] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16u::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b8 - //SEG494 test_16u::@8 + //SEG498 test_16u::@8 b8: - //SEG495 [240] (word) print_word::w#4 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG499 [244] (word) print_word::w#4 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta print_word.w lda rem16u+1 sta print_word.w+1 - //SEG496 [241] call print_word - //SEG497 [58] phi from test_16u::@8 to print_word [phi:test_16u::@8->print_word] + //SEG500 [245] call print_word + //SEG501 [60] phi from test_16u::@8 to print_word [phi:test_16u::@8->print_word] print_word_from_b8: - //SEG498 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@8->print_word#0] -- register_copy - //SEG499 [58] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:test_16u::@8->print_word#1] -- register_copy + //SEG502 [60] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@8->print_word#0] -- register_copy + //SEG503 [60] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:test_16u::@8->print_word#1] -- register_copy jsr print_word - //SEG500 [242] phi from test_16u::@8 to test_16u::@9 [phi:test_16u::@8->test_16u::@9] + //SEG504 [246] phi from test_16u::@8 to test_16u::@9 [phi:test_16u::@8->test_16u::@9] b9_from_b8: jmp b9 - //SEG501 test_16u::@9 + //SEG505 test_16u::@9 b9: - //SEG502 [243] call print_ln - //SEG503 [44] phi from test_16u::@9 to print_ln [phi:test_16u::@9->print_ln] + //SEG506 [247] call print_ln + //SEG507 [46] phi from test_16u::@9 to print_ln [phi:test_16u::@9->print_ln] print_ln_from_b9: - //SEG504 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16u::@9->print_ln#0] -- register_copy + //SEG508 [46] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16u::@9->print_ln#0] -- register_copy jsr print_ln jmp b10 - //SEG505 test_16u::@10 + //SEG509 test_16u::@10 b10: - //SEG506 [244] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 - lda i - clc - adc #2 - sta i - //SEG507 [245] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $c) goto test_16u::@1 -- vbuz1_neq_vbuc1_then_la1 - lda #$c + //SEG510 [248] (byte) test_16u::i#1 ← ++ (byte) test_16u::i#10 -- vbuz1=_inc_vbuz1 + inc i + //SEG511 [249] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_16u::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #6 cmp i bne b1_from_b10 jmp breturn - //SEG508 test_16u::@return + //SEG512 test_16u::@return breturn: - //SEG509 [246] return + //SEG513 [250] return rts dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff divisors: .word 5, 7, $b, $d, $11, $13 } -//SEG510 div16u +//SEG514 div16u // Performs division on two 16 bit unsigned words // Returns the quotient dividend/divisor. // The remainder will be set into the global variable rem16u @@ -8277,234 +8351,234 @@ div16u: { .label return = $e .label dividend = 5 .label divisor = $c - //SEG511 [247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 -- vwuz1=vwuz2 + //SEG515 [251] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 -- vwuz1=vwuz2 lda dividend sta divr16u.dividend lda dividend+1 sta divr16u.dividend+1 - //SEG512 [248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 - //SEG513 [249] call divr16u - //SEG514 [113] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG516 [252] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 + //SEG517 [253] call divr16u + //SEG518 [115] phi from div16u to divr16u [phi:div16u->divr16u] divr16u_from_div16u: - //SEG515 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:div16u->divr16u#0] -- register_copy - //SEG516 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:div16u->divr16u#1] -- register_copy - //SEG517 [113] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->divr16u#2] -- vwuz1=vbuc1 + //SEG519 [115] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:div16u->divr16u#0] -- register_copy + //SEG520 [115] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:div16u->divr16u#1] -- register_copy + //SEG521 [115] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->divr16u#2] -- vwuz1=vbuc1 lda #0 sta divr16u.rem lda #0 sta divr16u.rem+1 jsr divr16u - //SEG518 [250] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG522 [254] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp b1 - //SEG519 div16u::@1 + //SEG523 div16u::@1 b1: - //SEG520 [251] (word) div16u::return#0 ← (word) divr16u::return#2 + //SEG524 [255] (word) div16u::return#0 ← (word) divr16u::return#2 jmp breturn - //SEG521 div16u::@return + //SEG525 div16u::@return breturn: - //SEG522 [252] return + //SEG526 [256] return rts } -//SEG523 test_8u +//SEG527 test_8u test_8u: { .label dividend = 7 .label divisor = $10 .label res = $11 .label i = 2 - //SEG524 [254] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1] + //SEG528 [258] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1] b1_from_test_8u: - //SEG525 [254] phi (byte*) print_line_cursor#41 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 + //SEG529 [258] phi (byte*) print_line_cursor#41 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG526 [254] phi (byte*) print_char_cursor#138 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 + //SEG530 [258] phi (byte*) print_char_cursor#138 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG527 [254] phi (byte) test_8u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 + //SEG531 [258] phi (byte) test_8u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG528 test_8u::@1 + //SEG532 test_8u::@1 b1: - //SEG529 [255] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG533 [259] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend - //SEG530 [256] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG534 [260] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda divisors,y sta divisor - //SEG531 [257] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuaa=vbuz1 + //SEG535 [261] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuaa=vbuz1 lda dividend - //SEG532 [258] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuxx=vbuz1 + //SEG536 [262] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuxx=vbuz1 ldx divisor - //SEG533 [259] call div8u - //SEG534 [194] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] + //SEG537 [263] call div8u + //SEG538 [196] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] div8u_from_b1: - //SEG535 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#1 [phi:test_8u::@1->div8u#0] -- register_copy - //SEG536 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:test_8u::@1->div8u#1] -- register_copy + //SEG539 [196] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#1 [phi:test_8u::@1->div8u#0] -- register_copy + //SEG540 [196] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:test_8u::@1->div8u#1] -- register_copy jsr div8u - //SEG537 [260] (byte) div8u::return#3 ← (byte) div8u::return#0 + //SEG541 [264] (byte) div8u::return#3 ← (byte) div8u::return#0 jmp b2 - //SEG538 test_8u::@2 + //SEG542 test_8u::@2 b2: - //SEG539 [261] (byte) test_8u::res#0 ← (byte) div8u::return#3 -- vbuz1=vbuaa + //SEG543 [265] (byte) test_8u::res#0 ← (byte) div8u::return#3 -- vbuz1=vbuaa sta res - //SEG540 [262] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 - //SEG541 [263] call print_byte - //SEG542 [64] phi from test_8u::@2 to print_byte [phi:test_8u::@2->print_byte] + //SEG544 [266] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 + //SEG545 [267] call print_byte + //SEG546 [66] phi from test_8u::@2 to print_byte [phi:test_8u::@2->print_byte] print_byte_from_b2: - //SEG543 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#138 [phi:test_8u::@2->print_byte#0] -- register_copy - //SEG544 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#3 [phi:test_8u::@2->print_byte#1] -- register_copy + //SEG547 [66] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#138 [phi:test_8u::@2->print_byte#0] -- register_copy + //SEG548 [66] phi (byte) print_byte::b#7 = (byte) print_byte::b#3 [phi:test_8u::@2->print_byte#1] -- register_copy jsr print_byte - //SEG545 [264] phi from test_8u::@2 to test_8u::@3 [phi:test_8u::@2->test_8u::@3] + //SEG549 [268] phi from test_8u::@2 to test_8u::@3 [phi:test_8u::@2->test_8u::@3] b3_from_b2: jmp b3 - //SEG546 test_8u::@3 + //SEG550 test_8u::@3 b3: - //SEG547 [265] call print_str - //SEG548 [76] phi from test_8u::@3 to print_str [phi:test_8u::@3->print_str] + //SEG551 [269] call print_str + //SEG552 [78] phi from test_8u::@3 to print_str [phi:test_8u::@3->print_str] print_str_from_b3: - //SEG549 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_8u::@3->print_str#0] -- pbuz1=pbuc1 + //SEG553 [78] phi (byte*) print_str::str#15 = (const string) str [phi:test_8u::@3->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b4 - //SEG550 test_8u::@4 + //SEG554 test_8u::@4 b4: - //SEG551 [266] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 + //SEG555 [270] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 lda divisor sta print_byte.b - //SEG552 [267] call print_byte - //SEG553 [64] phi from test_8u::@4 to print_byte [phi:test_8u::@4->print_byte] + //SEG556 [271] call print_byte + //SEG557 [66] phi from test_8u::@4 to print_byte [phi:test_8u::@4->print_byte] print_byte_from_b4: - //SEG554 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@4->print_byte#0] -- register_copy - //SEG555 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#4 [phi:test_8u::@4->print_byte#1] -- register_copy + //SEG558 [66] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@4->print_byte#0] -- register_copy + //SEG559 [66] phi (byte) print_byte::b#7 = (byte) print_byte::b#4 [phi:test_8u::@4->print_byte#1] -- register_copy jsr print_byte - //SEG556 [268] phi from test_8u::@4 to test_8u::@5 [phi:test_8u::@4->test_8u::@5] + //SEG560 [272] phi from test_8u::@4 to test_8u::@5 [phi:test_8u::@4->test_8u::@5] b5_from_b4: jmp b5 - //SEG557 test_8u::@5 + //SEG561 test_8u::@5 b5: - //SEG558 [269] call print_str - //SEG559 [76] phi from test_8u::@5 to print_str [phi:test_8u::@5->print_str] + //SEG562 [273] call print_str + //SEG563 [78] phi from test_8u::@5 to print_str [phi:test_8u::@5->print_str] print_str_from_b5: - //SEG560 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8u::@5->print_str#0] -- pbuz1=pbuc1 + //SEG564 [78] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8u::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b6 - //SEG561 test_8u::@6 + //SEG565 test_8u::@6 b6: - //SEG562 [270] (byte) print_byte::b#5 ← (byte) test_8u::res#0 -- vbuz1=vbuz2 + //SEG566 [274] (byte) print_byte::b#5 ← (byte) test_8u::res#0 -- vbuz1=vbuz2 lda res sta print_byte.b - //SEG563 [271] call print_byte - //SEG564 [64] phi from test_8u::@6 to print_byte [phi:test_8u::@6->print_byte] + //SEG567 [275] call print_byte + //SEG568 [66] phi from test_8u::@6 to print_byte [phi:test_8u::@6->print_byte] print_byte_from_b6: - //SEG565 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@6->print_byte#0] -- register_copy - //SEG566 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#5 [phi:test_8u::@6->print_byte#1] -- register_copy + //SEG569 [66] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@6->print_byte#0] -- register_copy + //SEG570 [66] phi (byte) print_byte::b#7 = (byte) print_byte::b#5 [phi:test_8u::@6->print_byte#1] -- register_copy jsr print_byte - //SEG567 [272] phi from test_8u::@6 to test_8u::@7 [phi:test_8u::@6->test_8u::@7] + //SEG571 [276] phi from test_8u::@6 to test_8u::@7 [phi:test_8u::@6->test_8u::@7] b7_from_b6: jmp b7 - //SEG568 test_8u::@7 + //SEG572 test_8u::@7 b7: - //SEG569 [273] call print_str - //SEG570 [76] phi from test_8u::@7 to print_str [phi:test_8u::@7->print_str] + //SEG573 [277] call print_str + //SEG574 [78] phi from test_8u::@7 to print_str [phi:test_8u::@7->print_str] print_str_from_b7: - //SEG571 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8u::@7->print_str#0] -- pbuz1=pbuc1 + //SEG575 [78] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8u::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b8 - //SEG572 test_8u::@8 + //SEG576 test_8u::@8 b8: - //SEG573 [274] (byte) print_byte::b#6 ← (byte) rem8u#17 -- vbuz1=vbuxx + //SEG577 [278] (byte) print_byte::b#6 ← (byte) rem8u#17 -- vbuz1=vbuxx stx print_byte.b - //SEG574 [275] call print_byte - //SEG575 [64] phi from test_8u::@8 to print_byte [phi:test_8u::@8->print_byte] + //SEG578 [279] call print_byte + //SEG579 [66] phi from test_8u::@8 to print_byte [phi:test_8u::@8->print_byte] print_byte_from_b8: - //SEG576 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@8->print_byte#0] -- register_copy - //SEG577 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#6 [phi:test_8u::@8->print_byte#1] -- register_copy + //SEG580 [66] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@8->print_byte#0] -- register_copy + //SEG581 [66] phi (byte) print_byte::b#7 = (byte) print_byte::b#6 [phi:test_8u::@8->print_byte#1] -- register_copy jsr print_byte - //SEG578 [276] phi from test_8u::@8 to test_8u::@9 [phi:test_8u::@8->test_8u::@9] + //SEG582 [280] phi from test_8u::@8 to test_8u::@9 [phi:test_8u::@8->test_8u::@9] b9_from_b8: jmp b9 - //SEG579 test_8u::@9 + //SEG583 test_8u::@9 b9: - //SEG580 [277] call print_ln - //SEG581 [44] phi from test_8u::@9 to print_ln [phi:test_8u::@9->print_ln] + //SEG584 [281] call print_ln + //SEG585 [46] phi from test_8u::@9 to print_ln [phi:test_8u::@9->print_ln] print_ln_from_b9: - //SEG582 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#41 [phi:test_8u::@9->print_ln#0] -- register_copy + //SEG586 [46] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#41 [phi:test_8u::@9->print_ln#0] -- register_copy jsr print_ln jmp b10 - //SEG583 test_8u::@10 + //SEG587 test_8u::@10 b10: - //SEG584 [278] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 -- vbuz1=_inc_vbuz1 + //SEG588 [282] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG585 [279] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@11 -- vbuz1_neq_vbuc1_then_la1 + //SEG589 [283] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@11 -- vbuz1_neq_vbuc1_then_la1 lda #6 cmp i bne b11 jmp breturn - //SEG586 test_8u::@return + //SEG590 test_8u::@return breturn: - //SEG587 [280] return + //SEG591 [284] return rts - //SEG588 test_8u::@11 + //SEG592 test_8u::@11 b11: - //SEG589 [281] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG593 [285] (byte*~) print_char_cursor#188 ← (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 - //SEG590 [254] phi from test_8u::@11 to test_8u::@1 [phi:test_8u::@11->test_8u::@1] + //SEG594 [258] phi from test_8u::@11 to test_8u::@1 [phi:test_8u::@11->test_8u::@1] b1_from_b11: - //SEG591 [254] phi (byte*) print_line_cursor#41 = (byte*) print_line_cursor#1 [phi:test_8u::@11->test_8u::@1#0] -- register_copy - //SEG592 [254] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@11->test_8u::@1#1] -- register_copy - //SEG593 [254] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@11->test_8u::@1#2] -- register_copy + //SEG595 [258] phi (byte*) print_line_cursor#41 = (byte*) print_line_cursor#1 [phi:test_8u::@11->test_8u::@1#0] -- register_copy + //SEG596 [258] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@11->test_8u::@1#1] -- register_copy + //SEG597 [258] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@11->test_8u::@1#2] -- register_copy jmp b1 dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff divisors: .byte 5, 7, $b, $d, $11, $13 } -//SEG594 print_cls +//SEG598 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 3 - //SEG595 [283] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG599 [287] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG596 [283] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG600 [287] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG597 [283] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG601 [287] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG598 [283] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG602 [287] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG599 print_cls::@1 + //SEG603 print_cls::@1 b1: - //SEG600 [284] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG604 [288] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG601 [285] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG605 [289] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG602 [286] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG606 [290] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -8512,9 +8586,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG603 print_cls::@return + //SEG607 print_cls::@return breturn: - //SEG604 [287] return + //SEG608 [291] return rts } print_hextab: .text "0123456789abcdef" @@ -8629,7 +8703,6 @@ Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination -Removing instruction ldy i Removing instruction ldy #0 Replacing instruction ldy #0 with TAY Replacing instruction lda #0 with TXA @@ -8638,7 +8711,6 @@ Removing instruction ldy i Replacing instruction ldx divisor with TAX Replacing instruction lda #0 with TXA Replacing instruction ldy #0 with TAY -Removing instruction ldy i Removing instruction lda #0 Removing instruction ldy i Succesful ASM optimization Pass5UnnecesaryLoadElimination @@ -8888,7 +8960,7 @@ Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination Removing unreachable instruction rts Succesful ASM optimization Pass5UnreachableCodeElimination -Fixing long branch [76] bne b1 to beq +Fixing long branch [78] bne b1 to beq FINAL SYMBOL TABLE (label) @1 @@ -9127,7 +9199,7 @@ FINAL SYMBOL TABLE (byte[]) print_hextab (const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:3 3.9099999999999993 +(byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:3 3.759615384615385 (byte*) print_line_cursor#20 print_line_cursor zp ZP_WORD:3 204.0 (byte*) print_line_cursor#39 print_line_cursor zp ZP_WORD:3 46.0 (byte*) print_line_cursor#41 print_line_cursor zp ZP_WORD:3 0.9565217391304348 @@ -9196,6 +9268,8 @@ FINAL SYMBOL TABLE (const string) str1 str1 = (string) " = @" (const string) str2 str2 = (string) " @" (void()) test_16s() +(byte) test_16s::$16 reg byte a 22.0 +(byte) test_16s::$17 reg byte a 22.0 (label) test_16s::@1 (label) test_16s::@10 (label) test_16s::@2 @@ -9208,7 +9282,7 @@ FINAL SYMBOL TABLE (label) test_16s::@9 (label) test_16s::@return (signed word) test_16s::dividend -(signed word) test_16s::dividend#0 dividend zp ZP_WORD:5 4.714285714285714 +(signed word) test_16s::dividend#0 dividend zp ZP_WORD:5 4.125 (signed word[]) test_16s::dividends (const signed word[]) test_16s::dividends#0 dividends = { (word/signed word/dword/signed dword) $7fff, (word/signed word/dword/signed dword) $7fff, -(word/signed word/dword/signed dword) $7fff, -(word/signed word/dword/signed dword) $7fff, (word/signed word/dword/signed dword) $7fff, -(word/signed word/dword/signed dword) $7fff } (signed word) test_16s::divisor @@ -9217,10 +9291,12 @@ FINAL SYMBOL TABLE (const signed word[]) test_16s::divisors#0 divisors = { (byte/signed byte/word/signed word/dword/signed dword) 5, -(byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) $b, -(byte/signed byte/word/signed word/dword/signed dword) $d, -(byte/signed byte/word/signed word/dword/signed dword) $11, (byte/signed byte/word/signed word/dword/signed dword) $13 } (byte) test_16s::i (byte) test_16s::i#1 i zp ZP_BYTE:2 16.5 -(byte) test_16s::i#10 i zp ZP_BYTE:2 1.76 +(byte) test_16s::i#10 i zp ZP_BYTE:2 1.6296296296296295 (signed word) test_16s::res (signed word) test_16s::res#0 res zp ZP_WORD:14 2.2 (void()) test_16u() +(byte) test_16u::$10 reg byte a 22.0 +(byte) test_16u::$11 reg byte a 22.0 (label) test_16u::@1 (label) test_16u::@10 (label) test_16u::@2 @@ -9233,7 +9309,7 @@ FINAL SYMBOL TABLE (label) test_16u::@9 (label) test_16u::@return (word) test_16u::dividend -(word) test_16u::dividend#0 dividend zp ZP_WORD:5 4.714285714285714 +(word) test_16u::dividend#0 dividend zp ZP_WORD:5 4.125 (word[]) test_16u::dividends (const word[]) test_16u::dividends#0 dividends = { (word/dword/signed dword) $ffff, (word/dword/signed dword) $ffff, (word/dword/signed dword) $ffff, (word/dword/signed dword) $ffff, (word/dword/signed dword) $ffff, (word/dword/signed dword) $ffff } (word) test_16u::divisor @@ -9242,7 +9318,7 @@ FINAL SYMBOL TABLE (const word[]) test_16u::divisors#0 divisors = { (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) $b, (byte/signed byte/word/signed word/dword/signed dword) $d, (byte/signed byte/word/signed word/dword/signed dword) $11, (byte/signed byte/word/signed word/dword/signed dword) $13 } (byte) test_16u::i (byte) test_16u::i#1 i zp ZP_BYTE:2 16.5 -(byte) test_16u::i#10 i zp ZP_BYTE:2 1.76 +(byte) test_16u::i#10 i zp ZP_BYTE:2 1.6296296296296295 (word) test_16u::res (word) test_16u::res#0 res zp ZP_WORD:14 2.2 (void()) test_8s() @@ -9319,6 +9395,8 @@ reg byte y [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::re zp ZP_BYTE:17 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 test_8u::res#0 ] zp ZP_BYTE:18 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] reg byte x [ divr8u::i#2 divr8u::i#1 ] +reg byte a [ test_16s::$16 ] +reg byte a [ test_16s::$17 ] zp ZP_WORD:19 [ test_16s::divisor#0 div16s::divisor#0 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] @@ -9337,11 +9415,13 @@ reg byte a [ divr8u::return#0 ] reg byte a [ div8u::return#0 ] reg byte a [ divr8u::$1 ] reg byte x [ rem8u#17 ] +reg byte a [ test_16u::$10 ] +reg byte a [ test_16u::$11 ] reg byte a [ div8u::return#3 ] FINAL ASSEMBLER -Score: 32654 +Score: 32774 //SEG0 File Comments // Test the binary division library @@ -9364,22 +9444,22 @@ Score: 32654 //SEG10 main main: { //SEG11 [5] call print_cls - //SEG12 [282] phi from main to print_cls [phi:main->print_cls] + //SEG12 [286] phi from main to print_cls [phi:main->print_cls] jsr print_cls //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] //SEG14 main::@1 //SEG15 [7] call test_8u - //SEG16 [253] phi from main::@1 to test_8u [phi:main::@1->test_8u] + //SEG16 [257] phi from main::@1 to test_8u [phi:main::@1->test_8u] jsr test_8u //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] //SEG18 main::@2 //SEG19 [9] call test_16u - //SEG20 [218] phi from main::@2 to test_16u [phi:main::@2->test_16u] + //SEG20 [220] phi from main::@2 to test_16u [phi:main::@2->test_16u] jsr test_16u //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] //SEG22 main::@3 //SEG23 [11] call test_8s - //SEG24 [131] phi from main::@3 to test_8s [phi:main::@3->test_8s] + //SEG24 [133] phi from main::@3 to test_8s [phi:main::@3->test_8s] jsr test_8s //SEG25 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] //SEG26 main::@4 @@ -9404,130 +9484,134 @@ test_16s: { //SEG35 [16] phi (byte) test_16s::i#10 = (byte) test_16s::i#1 [phi:test_16s::@10->test_16s::@1#0] -- register_copy //SEG36 test_16s::@1 b1: - //SEG37 [17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 - ldy i + //SEG37 [17] (byte) test_16s::$16 ← (byte) test_16s::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + lda i + asl + //SEG38 [18] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::$16) -- vwsz1=pwsc1_derefidx_vbuaa + tay lda dividends,y sta dividend lda dividends+1,y sta dividend+1 - //SEG38 [18] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::i#10) -- vwsz1=pwsc1_derefidx_vbuz2 + //SEG39 [19] (byte) test_16s::$17 ← (byte) test_16s::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + lda i + asl + //SEG40 [20] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::$17) -- vwsz1=pwsc1_derefidx_vbuaa + tay lda divisors,y sta divisor lda divisors+1,y sta divisor+1 - //SEG39 [19] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 - //SEG40 [20] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 - //SEG41 [21] call div16s + //SEG41 [21] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0 + //SEG42 [22] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0 + //SEG43 [23] call div16s jsr div16s - //SEG42 [22] (signed word) div16s::return#2 ← (signed word) div16s::return#0 - //SEG43 test_16s::@2 - //SEG44 [23] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 - //SEG45 [24] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 - //SEG46 [25] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG44 [24] (signed word) div16s::return#2 ← (signed word) div16s::return#0 + //SEG45 test_16s::@2 + //SEG46 [25] (signed word) test_16s::res#0 ← (signed word) div16s::return#2 + //SEG47 [26] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0 + //SEG48 [27] (byte*~) print_char_cursor#159 ← (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 - //SEG47 [26] call print_sword - //SEG48 [49] phi from test_16s::@2 to print_sword [phi:test_16s::@2->print_sword] - //SEG49 [49] phi (byte*) print_char_cursor#131 = (byte*~) print_char_cursor#159 [phi:test_16s::@2->print_sword#0] -- register_copy - //SEG50 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#1 [phi:test_16s::@2->print_sword#1] -- register_copy + //SEG49 [28] call print_sword + //SEG50 [51] phi from test_16s::@2 to print_sword [phi:test_16s::@2->print_sword] + //SEG51 [51] phi (byte*) print_char_cursor#131 = (byte*~) print_char_cursor#159 [phi:test_16s::@2->print_sword#0] -- register_copy + //SEG52 [51] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#1 [phi:test_16s::@2->print_sword#1] -- register_copy jsr print_sword - //SEG51 [27] phi from test_16s::@2 to test_16s::@3 [phi:test_16s::@2->test_16s::@3] - //SEG52 test_16s::@3 - //SEG53 [28] call print_str - //SEG54 [76] phi from test_16s::@3 to print_str [phi:test_16s::@3->print_str] - //SEG55 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_16s::@3->print_str#0] -- pbuz1=pbuc1 + //SEG53 [29] phi from test_16s::@2 to test_16s::@3 [phi:test_16s::@2->test_16s::@3] + //SEG54 test_16s::@3 + //SEG55 [30] call print_str + //SEG56 [78] phi from test_16s::@3 to print_str [phi:test_16s::@3->print_str] + //SEG57 [78] phi (byte*) print_str::str#15 = (const string) str [phi:test_16s::@3->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG56 test_16s::@4 - //SEG57 [29] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 -- vwsz1=vwsz2 + //SEG58 test_16s::@4 + //SEG59 [31] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0 -- vwsz1=vwsz2 lda divisor sta print_sword.w lda divisor+1 sta print_sword.w+1 - //SEG58 [30] call print_sword - //SEG59 [49] phi from test_16s::@4 to print_sword [phi:test_16s::@4->print_sword] - //SEG60 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@4->print_sword#0] -- register_copy - //SEG61 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#2 [phi:test_16s::@4->print_sword#1] -- register_copy + //SEG60 [32] call print_sword + //SEG61 [51] phi from test_16s::@4 to print_sword [phi:test_16s::@4->print_sword] + //SEG62 [51] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@4->print_sword#0] -- register_copy + //SEG63 [51] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#2 [phi:test_16s::@4->print_sword#1] -- register_copy jsr print_sword - //SEG62 [31] phi from test_16s::@4 to test_16s::@5 [phi:test_16s::@4->test_16s::@5] - //SEG63 test_16s::@5 - //SEG64 [32] call print_str - //SEG65 [76] phi from test_16s::@5 to print_str [phi:test_16s::@5->print_str] - //SEG66 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16s::@5->print_str#0] -- pbuz1=pbuc1 + //SEG64 [33] phi from test_16s::@4 to test_16s::@5 [phi:test_16s::@4->test_16s::@5] + //SEG65 test_16s::@5 + //SEG66 [34] call print_str + //SEG67 [78] phi from test_16s::@5 to print_str [phi:test_16s::@5->print_str] + //SEG68 [78] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16s::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG67 test_16s::@6 - //SEG68 [33] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 -- vwsz1=vwsz2 + //SEG69 test_16s::@6 + //SEG70 [35] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0 -- vwsz1=vwsz2 lda res sta print_sword.w lda res+1 sta print_sword.w+1 - //SEG69 [34] call print_sword - //SEG70 [49] phi from test_16s::@6 to print_sword [phi:test_16s::@6->print_sword] - //SEG71 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@6->print_sword#0] -- register_copy - //SEG72 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:test_16s::@6->print_sword#1] -- register_copy + //SEG71 [36] call print_sword + //SEG72 [51] phi from test_16s::@6 to print_sword [phi:test_16s::@6->print_sword] + //SEG73 [51] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@6->print_sword#0] -- register_copy + //SEG74 [51] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#3 [phi:test_16s::@6->print_sword#1] -- register_copy jsr print_sword - //SEG73 [35] phi from test_16s::@6 to test_16s::@7 [phi:test_16s::@6->test_16s::@7] - //SEG74 test_16s::@7 - //SEG75 [36] call print_str - //SEG76 [76] phi from test_16s::@7 to print_str [phi:test_16s::@7->print_str] - //SEG77 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16s::@7->print_str#0] -- pbuz1=pbuc1 + //SEG75 [37] phi from test_16s::@6 to test_16s::@7 [phi:test_16s::@6->test_16s::@7] + //SEG76 test_16s::@7 + //SEG77 [38] call print_str + //SEG78 [78] phi from test_16s::@7 to print_str [phi:test_16s::@7->print_str] + //SEG79 [78] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16s::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG78 test_16s::@8 - //SEG79 [37] (signed word) print_sword::w#4 ← (signed word) rem16s#11 -- vwsz1=vwsz2 + //SEG80 test_16s::@8 + //SEG81 [39] (signed word) print_sword::w#4 ← (signed word) rem16s#11 -- vwsz1=vwsz2 lda rem16s sta print_sword.w lda rem16s+1 sta print_sword.w+1 - //SEG80 [38] call print_sword - //SEG81 [49] phi from test_16s::@8 to print_sword [phi:test_16s::@8->print_sword] - //SEG82 [49] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@8->print_sword#0] -- register_copy - //SEG83 [49] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:test_16s::@8->print_sword#1] -- register_copy + //SEG82 [40] call print_sword + //SEG83 [51] phi from test_16s::@8 to print_sword [phi:test_16s::@8->print_sword] + //SEG84 [51] phi (byte*) print_char_cursor#131 = (byte*) print_char_cursor#128 [phi:test_16s::@8->print_sword#0] -- register_copy + //SEG85 [51] phi (signed word) print_sword::w#5 = (signed word) print_sword::w#4 [phi:test_16s::@8->print_sword#1] -- register_copy jsr print_sword - //SEG84 [39] phi from test_16s::@8 to test_16s::@9 [phi:test_16s::@8->test_16s::@9] - //SEG85 test_16s::@9 - //SEG86 [40] call print_ln - //SEG87 [44] phi from test_16s::@9 to print_ln [phi:test_16s::@9->print_ln] - //SEG88 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16s::@9->print_ln#0] -- register_copy + //SEG86 [41] phi from test_16s::@8 to test_16s::@9 [phi:test_16s::@8->test_16s::@9] + //SEG87 test_16s::@9 + //SEG88 [42] call print_ln + //SEG89 [46] phi from test_16s::@9 to print_ln [phi:test_16s::@9->print_ln] + //SEG90 [46] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16s::@9->print_ln#0] -- register_copy jsr print_ln - //SEG89 test_16s::@10 - //SEG90 [41] (byte) test_16s::i#1 ← (byte) test_16s::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 - lda i - clc - adc #2 - sta i - //SEG91 [42] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $c) goto test_16s::@1 -- vbuz1_neq_vbuc1_then_la1 - lda #$c + //SEG91 test_16s::@10 + //SEG92 [43] (byte) test_16s::i#1 ← ++ (byte) test_16s::i#10 -- vbuz1=_inc_vbuz1 + inc i + //SEG93 [44] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_16s::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #6 cmp i beq !b1+ jmp b1 !b1: - //SEG92 test_16s::@return - //SEG93 [43] return + //SEG94 test_16s::@return + //SEG95 [45] return rts dividends: .word $7fff, $7fff, -$7fff, -$7fff, $7fff, -$7fff divisors: .word 5, -7, $b, -$d, -$11, $13 } -//SEG94 print_ln +//SEG96 print_ln // Print a newline print_ln: { - //SEG95 [45] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] - //SEG96 [45] phi (byte*) print_line_cursor#20 = (byte*) print_line_cursor#39 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy - //SEG97 print_ln::@1 + //SEG97 [47] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG98 [47] phi (byte*) print_line_cursor#20 = (byte*) print_line_cursor#39 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG99 print_ln::@1 b1: - //SEG98 [46] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 + //SEG100 [48] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1 lda #$28 clc adc print_line_cursor @@ -9535,7 +9619,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG99 [47] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG101 [49] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -9544,28 +9628,28 @@ print_ln: { cmp print_char_cursor bcc b1 !: - //SEG100 print_ln::@return - //SEG101 [48] return + //SEG102 print_ln::@return + //SEG103 [50] return rts } -//SEG102 print_sword +//SEG104 print_sword // Print a signed word as HEX // print_sword(signed word zeropage(5) w) print_sword: { .label w = 5 - //SEG103 [50] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 + //SEG105 [52] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 -- vwsz1_ge_0_then_la1 lda w+1 bpl b1 - //SEG104 [51] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] - //SEG105 print_sword::@2 - //SEG106 [52] call print_char - //SEG107 [72] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] - //SEG108 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#131 [phi:print_sword::@2->print_char#0] -- register_copy - //SEG109 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 + //SEG106 [53] phi from print_sword to print_sword::@2 [phi:print_sword->print_sword::@2] + //SEG107 print_sword::@2 + //SEG108 [54] call print_char + //SEG109 [74] phi from print_sword::@2 to print_char [phi:print_sword::@2->print_char] + //SEG110 [74] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#131 [phi:print_sword::@2->print_char#0] -- register_copy + //SEG111 [74] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sword::@2->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG110 print_sword::@3 - //SEG111 [53] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1 + //SEG112 print_sword::@3 + //SEG113 [55] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5 -- vwsz1=_neg_vwsz1 sec lda w eor #$ff @@ -9575,135 +9659,135 @@ print_sword: { eor #$ff adc #0 sta w+1 - //SEG112 [54] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] - //SEG113 [54] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#131 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy - //SEG114 [54] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#5 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy - //SEG115 print_sword::@1 + //SEG114 [56] phi from print_sword print_sword::@3 to print_sword::@1 [phi:print_sword/print_sword::@3->print_sword::@1] + //SEG115 [56] phi (byte*) print_char_cursor#130 = (byte*) print_char_cursor#131 [phi:print_sword/print_sword::@3->print_sword::@1#0] -- register_copy + //SEG116 [56] phi (signed word) print_sword::w#6 = (signed word) print_sword::w#5 [phi:print_sword/print_sword::@3->print_sword::@1#1] -- register_copy + //SEG117 print_sword::@1 b1: - //SEG116 [55] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 - //SEG117 [56] call print_word - //SEG118 [58] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] - //SEG119 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy - //SEG120 [58] phi (word) print_word::w#5 = (word~) print_word::w#7 [phi:print_sword::@1->print_word#1] -- register_copy + //SEG118 [57] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6 + //SEG119 [58] call print_word + //SEG120 [60] phi from print_sword::@1 to print_word [phi:print_sword::@1->print_word] + //SEG121 [60] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#130 [phi:print_sword::@1->print_word#0] -- register_copy + //SEG122 [60] phi (word) print_word::w#5 = (word~) print_word::w#7 [phi:print_sword::@1->print_word#1] -- register_copy jsr print_word - //SEG121 print_sword::@return - //SEG122 [57] return + //SEG123 print_sword::@return + //SEG124 [59] return rts } -//SEG123 print_word +//SEG125 print_word // Print a word as HEX // print_word(word zeropage(5) w) print_word: { .label w = 5 - //SEG124 [59] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 + //SEG126 [61] (byte) print_byte::b#1 ← > (word) print_word::w#5 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG125 [60] call print_byte - //SEG126 [64] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG127 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy - //SEG128 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy + //SEG127 [62] call print_byte + //SEG128 [66] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG129 [66] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#135 [phi:print_word->print_byte#0] -- register_copy + //SEG130 [66] phi (byte) print_byte::b#7 = (byte) print_byte::b#1 [phi:print_word->print_byte#1] -- register_copy jsr print_byte - //SEG129 print_word::@1 - //SEG130 [61] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 + //SEG131 print_word::@1 + //SEG132 [63] (byte) print_byte::b#2 ← < (word) print_word::w#5 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG131 [62] call print_byte - //SEG132 [64] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG133 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG134 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG133 [64] call print_byte + //SEG134 [66] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG135 [66] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG136 [66] phi (byte) print_byte::b#7 = (byte) print_byte::b#2 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte - //SEG135 print_word::@return - //SEG136 [63] return + //SEG137 print_word::@return + //SEG138 [65] return rts } -//SEG137 print_byte +//SEG139 print_byte // Print a byte as HEX // print_byte(byte zeropage(7) b) print_byte: { .label b = 7 - //SEG138 [65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 + //SEG140 [67] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_ror_4 lda b lsr lsr lsr lsr - //SEG139 [66] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG141 [68] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG140 [67] call print_char - //SEG141 [72] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG142 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy - //SEG143 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy + //SEG142 [69] call print_char + //SEG143 [74] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG144 [74] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#136 [phi:print_byte->print_char#0] -- register_copy + //SEG145 [74] phi (byte) print_char::ch#5 = (byte) print_char::ch#3 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG144 print_byte::@1 - //SEG145 [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) $f -- vbuaa=vbuz1_band_vbuc1 + //SEG146 print_byte::@1 + //SEG147 [70] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) $f -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG146 [69] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG148 [71] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG147 [70] call print_char - //SEG148 [72] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG149 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG150 [72] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG149 [72] call print_char + //SEG150 [74] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG151 [74] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#18 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG152 [74] phi (byte) print_char::ch#5 = (byte) print_char::ch#4 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG151 print_byte::@return - //SEG152 [71] return + //SEG153 print_byte::@return + //SEG154 [73] return rts } -//SEG153 print_char +//SEG155 print_char // Print a single char // print_char(byte register(A) ch) print_char: { - //SEG154 [73] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa + //SEG156 [75] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG155 [74] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 -- pbuz1=_inc_pbuz1 + //SEG157 [76] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG156 print_char::@return - //SEG157 [75] return + //SEG158 print_char::@return + //SEG159 [77] return rts } -//SEG158 print_str +//SEG160 print_str // Print a zero-terminated string // print_str(byte* zeropage(5) str) print_str: { .label str = 5 - //SEG159 [77] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] - //SEG160 [77] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#18 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy - //SEG161 [77] phi (byte*) print_str::str#13 = (byte*) print_str::str#15 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy - //SEG162 print_str::@1 + //SEG161 [79] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG162 [79] phi (byte*) print_char_cursor#128 = (byte*) print_char_cursor#18 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG163 [79] phi (byte*) print_str::str#13 = (byte*) print_str::str#15 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG164 print_str::@1 b1: - //SEG163 [78] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 + //SEG165 [80] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2 -- _deref_pbuz1_neq_vbuc1_then_la1 ldy #0 lda (str),y cmp #'@' bne b2 - //SEG164 print_str::@return - //SEG165 [79] return + //SEG166 print_str::@return + //SEG167 [81] return rts - //SEG166 print_str::@2 + //SEG168 print_str::@2 b2: - //SEG167 [80] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) -- _deref_pbuz1=_deref_pbuz2 + //SEG169 [82] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (str),y sta (print_char_cursor),y - //SEG168 [81] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 + //SEG170 [83] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG169 [82] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 -- pbuz1=_inc_pbuz1 + //SEG171 [84] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13 -- pbuz1=_inc_pbuz1 inc str bne !+ inc str+1 !: jmp b1 } -//SEG170 div16s +//SEG172 div16s // Perform division on two signed 16-bit numbers // Returns dividend/divisor. // The remainder will be set into the global variable rem16s. @@ -9715,26 +9799,26 @@ div16s: { .label return = $e .label dividend = 5 .label divisor = $13 - //SEG171 [83] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 -- vwsz1=vwsz2 + //SEG173 [85] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0 -- vwsz1=vwsz2 lda dividend sta divr16s.dividend lda dividend+1 sta divr16s.dividend+1 - //SEG172 [84] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 -- vwsz1=vwsz2 + //SEG174 [86] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0 -- vwsz1=vwsz2 lda divisor sta divr16s.divisor lda divisor+1 sta divr16s.divisor+1 - //SEG173 [85] call divr16s + //SEG175 [87] call divr16s jsr divr16s - //SEG174 [86] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 - //SEG175 div16s::@1 - //SEG176 [87] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 - //SEG177 div16s::@return - //SEG178 [88] return + //SEG176 [88] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + //SEG177 div16s::@1 + //SEG178 [89] (signed word) div16s::return#0 ← (signed word) divr16s::return#3 + //SEG179 div16s::@return + //SEG180 [90] return rts } -//SEG179 divr16s +//SEG181 divr16s // Perform division on two signed 16-bit numbers with an initial remainder. // Returns dividend/divisor. The remainder will be set into the global variable rem16s. // Implemented using simple binary division @@ -9752,49 +9836,49 @@ divr16s: { .label dividendu = 8 .label divisoru = $c .label remu = $a - //SEG180 [89] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 + //SEG182 [91] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 lda dividend+1 bmi b1 - //SEG181 divr16s::@7 - //SEG182 [90] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 - //SEG183 [91] phi from divr16s::@7 to divr16s::@2 [phi:divr16s::@7->divr16s::@2] - //SEG184 [91] phi (word) divr16s::remu#3 = ((word))(const signed word) divr16s::rem#0 [phi:divr16s::@7->divr16s::@2#0] -- vwuz1=vbuc1 + //SEG183 divr16s::@7 + //SEG184 [92] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0 + //SEG185 [93] phi from divr16s::@7 to divr16s::@2 [phi:divr16s::@7->divr16s::@2] + //SEG186 [93] phi (word) divr16s::remu#3 = ((word))(const signed word) divr16s::rem#0 [phi:divr16s::@7->divr16s::@2#0] -- vwuz1=vbuc1 lda #rem sta remu lda #0 sta remu+1 - //SEG185 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#8 [phi:divr16s::@7->divr16s::@2#1] -- register_copy - //SEG186 [91] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@7->divr16s::@2#2] -- vbuyy=vbuc1 + //SEG187 [93] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#8 [phi:divr16s::@7->divr16s::@2#1] -- register_copy + //SEG188 [93] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@7->divr16s::@2#2] -- vbuyy=vbuc1 tay - //SEG187 divr16s::@2 + //SEG189 divr16s::@2 b2: - //SEG188 [92] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 + //SEG190 [94] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 lda divisor+1 bmi b3 - //SEG189 divr16s::@8 - //SEG190 [93] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 - //SEG191 [94] phi from divr16s::@3 divr16s::@8 to divr16s::@4 [phi:divr16s::@3/divr16s::@8->divr16s::@4] - //SEG192 [94] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@8->divr16s::@4#0] -- register_copy - //SEG193 [94] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@8->divr16s::@4#1] -- register_copy - //SEG194 divr16s::@4 + //SEG191 divr16s::@8 + //SEG192 [95] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + //SEG193 [96] phi from divr16s::@3 divr16s::@8 to divr16s::@4 [phi:divr16s::@3/divr16s::@8->divr16s::@4] + //SEG194 [96] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#2 [phi:divr16s::@3/divr16s::@8->divr16s::@4#0] -- register_copy + //SEG195 [96] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#4 [phi:divr16s::@3/divr16s::@8->divr16s::@4#1] -- register_copy + //SEG196 divr16s::@4 b4: - //SEG195 [95] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 - //SEG196 [96] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 - //SEG197 [97] (word) divr16u::rem#4 ← (word) divr16s::remu#3 - //SEG198 [98] call divr16u - //SEG199 [113] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] - //SEG200 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:divr16s::@4->divr16u#0] -- register_copy - //SEG201 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#2 [phi:divr16s::@4->divr16u#1] -- register_copy - //SEG202 [113] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:divr16s::@4->divr16u#2] -- register_copy + //SEG197 [97] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3 + //SEG198 [98] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3 + //SEG199 [99] (word) divr16u::rem#4 ← (word) divr16s::remu#3 + //SEG200 [100] call divr16u + //SEG201 [115] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] + //SEG202 [115] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#1 [phi:divr16s::@4->divr16u#0] -- register_copy + //SEG203 [115] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#2 [phi:divr16s::@4->divr16u#1] -- register_copy + //SEG204 [115] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:divr16s::@4->divr16u#2] -- register_copy jsr divr16u - //SEG203 [99] (word) divr16u::return#3 ← (word) divr16u::return#0 - //SEG204 divr16s::@6 - //SEG205 [100] (word) divr16s::resultu#0 ← (word) divr16u::return#3 - //SEG206 [101] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@9 -- vbuyy_eq_0_then_la1 + //SEG205 [101] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG206 divr16s::@6 + //SEG207 [102] (word) divr16s::resultu#0 ← (word) divr16u::return#3 + //SEG208 [103] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@9 -- vbuyy_eq_0_then_la1 cpy #0 beq breturn - //SEG207 divr16s::@5 - //SEG208 [102] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 -- vwsz1=_neg_vwsz1 + //SEG209 divr16s::@5 + //SEG210 [104] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1 -- vwsz1=_neg_vwsz1 sec lda rem16s eor #$ff @@ -9804,7 +9888,7 @@ divr16s: { eor #$ff adc #0 sta rem16s+1 - //SEG209 [103] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 + //SEG211 [105] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 sec lda return eor #$ff @@ -9814,19 +9898,19 @@ divr16s: { eor #$ff adc #0 sta return+1 - //SEG210 [104] phi from divr16s::@5 divr16s::@9 to divr16s::@return [phi:divr16s::@5/divr16s::@9->divr16s::@return] - //SEG211 [104] phi (signed word) rem16s#11 = (signed word) rem16s#2 [phi:divr16s::@5/divr16s::@9->divr16s::@return#0] -- register_copy - //SEG212 [104] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@5/divr16s::@9->divr16s::@return#1] -- register_copy - //SEG213 divr16s::@return + //SEG212 [106] phi from divr16s::@5 divr16s::@9 to divr16s::@return [phi:divr16s::@5/divr16s::@9->divr16s::@return] + //SEG213 [106] phi (signed word) rem16s#11 = (signed word) rem16s#2 [phi:divr16s::@5/divr16s::@9->divr16s::@return#0] -- register_copy + //SEG214 [106] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@5/divr16s::@9->divr16s::@return#1] -- register_copy + //SEG215 divr16s::@return breturn: - //SEG214 [105] return + //SEG216 [107] return rts - //SEG215 divr16s::@9 - //SEG216 [106] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 - //SEG217 [107] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 - //SEG218 divr16s::@3 + //SEG217 divr16s::@9 + //SEG218 [108] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 + //SEG219 [109] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1 + //SEG220 divr16s::@3 b3: - //SEG219 [108] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 + //SEG221 [110] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 sec lda _13 eor #$ff @@ -9836,15 +9920,15 @@ divr16s: { eor #$ff adc #0 sta _13+1 - //SEG220 [109] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1 + //SEG222 [111] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1 tya eor #1 tay - //SEG221 [110] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 + //SEG223 [112] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13 jmp b4 - //SEG222 divr16s::@1 + //SEG224 divr16s::@1 b1: - //SEG223 [111] (signed word~) divr16s::$8 ← - (signed word) divr16s::dividend#0 -- vwsz1=_neg_vwsz1 + //SEG225 [113] (signed word~) divr16s::$8 ← - (signed word) divr16s::dividend#0 -- vwsz1=_neg_vwsz1 sec lda _8 eor #$ff @@ -9854,19 +9938,19 @@ divr16s: { eor #$ff adc #0 sta _8+1 - //SEG224 [112] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$8 - //SEG225 [91] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] - //SEG226 [91] phi (word) divr16s::remu#3 = ((word))-(const signed word) divr16s::rem#0 [phi:divr16s::@1->divr16s::@2#0] -- vwuz1=vbuc1 + //SEG226 [114] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$8 + //SEG227 [93] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] + //SEG228 [93] phi (word) divr16s::remu#3 = ((word))-(const signed word) divr16s::rem#0 [phi:divr16s::@1->divr16s::@2#0] -- vwuz1=vbuc1 lda #-rem sta remu lda #0 sta remu+1 - //SEG227 [91] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#7 [phi:divr16s::@1->divr16s::@2#1] -- register_copy - //SEG228 [91] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuyy=vbuc1 + //SEG229 [93] phi (word) divr16s::dividendu#3 = (word~) divr16s::dividendu#7 [phi:divr16s::@1->divr16s::@2#1] -- register_copy + //SEG230 [93] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuyy=vbuc1 ldy #1 jmp b2 } -//SEG229 divr16u +//SEG231 divr16u // Performs division on two 16 bit unsigned words and an initial remainder // Returns the quotient dividend/divisor. // The final remainder will be set into the global variable rem16u @@ -9878,48 +9962,48 @@ divr16u: { .label quotient = $e .label return = $e .label divisor = $c - //SEG230 [114] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - //SEG231 [114] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG232 [116] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG233 [116] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG232 [114] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG234 [116] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 txa sta quotient sta quotient+1 - //SEG233 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG234 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy - //SEG235 [114] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - //SEG236 [114] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG237 [114] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG238 [114] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG239 [114] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy - //SEG240 divr16u::@1 + //SEG235 [116] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG236 [116] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG237 [116] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG238 [116] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG239 [116] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG240 [116] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG241 [116] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG242 divr16u::@1 b1: - //SEG241 [115] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG243 [117] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG242 [116] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG244 [118] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG243 [117] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 -- vbuaa=vbuaa_band_vbuc1 + //SEG245 [119] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG244 [118] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG246 [120] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG245 divr16u::@4 - //SEG246 [119] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG247 divr16u::@4 + //SEG248 [121] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG247 [120] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - //SEG248 [120] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy - //SEG249 divr16u::@2 + //SEG249 [122] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG250 [122] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG251 divr16u::@2 b2: - //SEG250 [121] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG252 [123] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG251 [122] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG253 [124] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG252 [123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + //SEG254 [125] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 lda rem+1 cmp divisor+1 bcc b3 @@ -9928,13 +10012,13 @@ divr16u: { cmp divisor bcc b3 !: - //SEG253 divr16u::@5 - //SEG254 [124] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG255 divr16u::@5 + //SEG256 [126] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG255 [125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 + //SEG257 [127] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -9942,179 +10026,179 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG256 [126] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - //SEG257 [126] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG258 [126] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy - //SEG259 divr16u::@3 + //SEG258 [128] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG259 [128] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG260 [128] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG261 divr16u::@3 b3: - //SEG260 [127] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG262 [129] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG261 [128] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG263 [130] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG262 divr16u::@6 - //SEG263 [129] (word) rem16u#1 ← (word) divr16u::rem#11 - //SEG264 divr16u::@return - //SEG265 [130] return + //SEG264 divr16u::@6 + //SEG265 [131] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG266 divr16u::@return + //SEG267 [132] return rts } -//SEG266 test_8s +//SEG268 test_8s test_8s: { .label dividend = 7 .label divisor = $15 .label res = $10 .label i = 2 - //SEG267 [132] phi from test_8s to test_8s::@1 [phi:test_8s->test_8s::@1] - //SEG268 [132] phi (byte) test_8s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8s->test_8s::@1#0] -- vbuz1=vbuc1 + //SEG269 [134] phi from test_8s to test_8s::@1 [phi:test_8s->test_8s::@1] + //SEG270 [134] phi (byte) test_8s::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8s->test_8s::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG269 [132] phi from test_8s::@10 to test_8s::@1 [phi:test_8s::@10->test_8s::@1] - //SEG270 [132] phi (byte) test_8s::i#10 = (byte) test_8s::i#1 [phi:test_8s::@10->test_8s::@1#0] -- register_copy - //SEG271 test_8s::@1 + //SEG271 [134] phi from test_8s::@10 to test_8s::@1 [phi:test_8s::@10->test_8s::@1] + //SEG272 [134] phi (byte) test_8s::i#10 = (byte) test_8s::i#1 [phi:test_8s::@10->test_8s::@1#0] -- register_copy + //SEG273 test_8s::@1 b1: - //SEG272 [133] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG274 [135] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend - //SEG273 [134] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 + //SEG275 [136] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10) -- vbsz1=pbsc1_derefidx_vbuz2 lda divisors,y sta divisor - //SEG274 [135] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsyy=vbsz1 + //SEG276 [137] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0 -- vbsyy=vbsz1 ldy dividend - //SEG275 [136] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsxx=vbsz1 + //SEG277 [138] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0 -- vbsxx=vbsz1 tax - //SEG276 [137] call div8s + //SEG278 [139] call div8s jsr div8s - //SEG277 [138] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 - //SEG278 test_8s::@2 - //SEG279 [139] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 -- vbsz1=vbsaa + //SEG279 [140] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2 + //SEG280 test_8s::@2 + //SEG281 [141] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3 -- vbsz1=vbsaa sta res - //SEG280 [140] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 - //SEG281 [141] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG282 [142] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0 + //SEG283 [143] (byte*~) print_char_cursor#184 ← (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 - //SEG282 [142] call print_sbyte - //SEG283 [160] phi from test_8s::@2 to print_sbyte [phi:test_8s::@2->print_sbyte] - //SEG284 [160] phi (byte*) print_char_cursor#132 = (byte*~) print_char_cursor#184 [phi:test_8s::@2->print_sbyte#0] -- register_copy - //SEG285 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#1 [phi:test_8s::@2->print_sbyte#1] -- register_copy + //SEG284 [144] call print_sbyte + //SEG285 [162] phi from test_8s::@2 to print_sbyte [phi:test_8s::@2->print_sbyte] + //SEG286 [162] phi (byte*) print_char_cursor#132 = (byte*~) print_char_cursor#184 [phi:test_8s::@2->print_sbyte#0] -- register_copy + //SEG287 [162] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#1 [phi:test_8s::@2->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG286 [143] phi from test_8s::@2 to test_8s::@3 [phi:test_8s::@2->test_8s::@3] - //SEG287 test_8s::@3 - //SEG288 [144] call print_str - //SEG289 [76] phi from test_8s::@3 to print_str [phi:test_8s::@3->print_str] - //SEG290 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_8s::@3->print_str#0] -- pbuz1=pbuc1 + //SEG288 [145] phi from test_8s::@2 to test_8s::@3 [phi:test_8s::@2->test_8s::@3] + //SEG289 test_8s::@3 + //SEG290 [146] call print_str + //SEG291 [78] phi from test_8s::@3 to print_str [phi:test_8s::@3->print_str] + //SEG292 [78] phi (byte*) print_str::str#15 = (const string) str [phi:test_8s::@3->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG291 test_8s::@4 - //SEG292 [145] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 + //SEG293 test_8s::@4 + //SEG294 [147] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0 -- vbsz1=vbsz2 lda divisor sta print_sbyte.b - //SEG293 [146] call print_sbyte - //SEG294 [160] phi from test_8s::@4 to print_sbyte [phi:test_8s::@4->print_sbyte] - //SEG295 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@4->print_sbyte#0] -- register_copy - //SEG296 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#2 [phi:test_8s::@4->print_sbyte#1] -- register_copy + //SEG295 [148] call print_sbyte + //SEG296 [162] phi from test_8s::@4 to print_sbyte [phi:test_8s::@4->print_sbyte] + //SEG297 [162] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@4->print_sbyte#0] -- register_copy + //SEG298 [162] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#2 [phi:test_8s::@4->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG297 [147] phi from test_8s::@4 to test_8s::@5 [phi:test_8s::@4->test_8s::@5] - //SEG298 test_8s::@5 - //SEG299 [148] call print_str - //SEG300 [76] phi from test_8s::@5 to print_str [phi:test_8s::@5->print_str] - //SEG301 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8s::@5->print_str#0] -- pbuz1=pbuc1 + //SEG299 [149] phi from test_8s::@4 to test_8s::@5 [phi:test_8s::@4->test_8s::@5] + //SEG300 test_8s::@5 + //SEG301 [150] call print_str + //SEG302 [78] phi from test_8s::@5 to print_str [phi:test_8s::@5->print_str] + //SEG303 [78] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8s::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG302 test_8s::@6 - //SEG303 [149] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 -- vbsz1=vbsz2 + //SEG304 test_8s::@6 + //SEG305 [151] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0 -- vbsz1=vbsz2 lda res sta print_sbyte.b - //SEG304 [150] call print_sbyte - //SEG305 [160] phi from test_8s::@6 to print_sbyte [phi:test_8s::@6->print_sbyte] - //SEG306 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@6->print_sbyte#0] -- register_copy - //SEG307 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#3 [phi:test_8s::@6->print_sbyte#1] -- register_copy + //SEG306 [152] call print_sbyte + //SEG307 [162] phi from test_8s::@6 to print_sbyte [phi:test_8s::@6->print_sbyte] + //SEG308 [162] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@6->print_sbyte#0] -- register_copy + //SEG309 [162] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#3 [phi:test_8s::@6->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG308 [151] phi from test_8s::@6 to test_8s::@7 [phi:test_8s::@6->test_8s::@7] - //SEG309 test_8s::@7 - //SEG310 [152] call print_str - //SEG311 [76] phi from test_8s::@7 to print_str [phi:test_8s::@7->print_str] - //SEG312 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8s::@7->print_str#0] -- pbuz1=pbuc1 + //SEG310 [153] phi from test_8s::@6 to test_8s::@7 [phi:test_8s::@6->test_8s::@7] + //SEG311 test_8s::@7 + //SEG312 [154] call print_str + //SEG313 [78] phi from test_8s::@7 to print_str [phi:test_8s::@7->print_str] + //SEG314 [78] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8s::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG313 test_8s::@8 - //SEG314 [153] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 -- vbsz1=vbsxx + //SEG315 test_8s::@8 + //SEG316 [155] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3 -- vbsz1=vbsxx stx print_sbyte.b - //SEG315 [154] call print_sbyte - //SEG316 [160] phi from test_8s::@8 to print_sbyte [phi:test_8s::@8->print_sbyte] - //SEG317 [160] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@8->print_sbyte#0] -- register_copy - //SEG318 [160] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#4 [phi:test_8s::@8->print_sbyte#1] -- register_copy + //SEG317 [156] call print_sbyte + //SEG318 [162] phi from test_8s::@8 to print_sbyte [phi:test_8s::@8->print_sbyte] + //SEG319 [162] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:test_8s::@8->print_sbyte#0] -- register_copy + //SEG320 [162] phi (signed byte) print_sbyte::b#10 = (signed byte) print_sbyte::b#4 [phi:test_8s::@8->print_sbyte#1] -- register_copy jsr print_sbyte - //SEG319 [155] phi from test_8s::@8 to test_8s::@9 [phi:test_8s::@8->test_8s::@9] - //SEG320 test_8s::@9 - //SEG321 [156] call print_ln - //SEG322 [44] phi from test_8s::@9 to print_ln [phi:test_8s::@9->print_ln] - //SEG323 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_8s::@9->print_ln#0] -- register_copy + //SEG321 [157] phi from test_8s::@8 to test_8s::@9 [phi:test_8s::@8->test_8s::@9] + //SEG322 test_8s::@9 + //SEG323 [158] call print_ln + //SEG324 [46] phi from test_8s::@9 to print_ln [phi:test_8s::@9->print_ln] + //SEG325 [46] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_8s::@9->print_ln#0] -- register_copy jsr print_ln - //SEG324 test_8s::@10 - //SEG325 [157] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 -- vbuz1=_inc_vbuz1 + //SEG326 test_8s::@10 + //SEG327 [159] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG326 [158] if((byte) test_8s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8s::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG328 [160] if((byte) test_8s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8s::@1 -- vbuz1_neq_vbuc1_then_la1 lda #6 cmp i bne b1 - //SEG327 test_8s::@return - //SEG328 [159] return + //SEG329 test_8s::@return + //SEG330 [161] return rts dividends: .byte $7f, -$7f, -$7f, $7f, $7f, $7f divisors: .byte 5, 7, -$b, -$d, $11, $13 } -//SEG329 print_sbyte +//SEG331 print_sbyte // Print a signed byte as HEX // print_sbyte(signed byte zeropage(7) b) print_sbyte: { .label b = 7 - //SEG330 [161] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 + //SEG332 [163] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -- vbsz1_lt_0_then_la1 lda b bmi b1 - //SEG331 [162] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] - //SEG332 print_sbyte::@3 - //SEG333 [163] call print_char - //SEG334 [72] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] - //SEG335 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy - //SEG336 [72] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 + //SEG333 [164] phi from print_sbyte to print_sbyte::@3 [phi:print_sbyte->print_sbyte::@3] + //SEG334 print_sbyte::@3 + //SEG335 [165] call print_char + //SEG336 [74] phi from print_sbyte::@3 to print_char [phi:print_sbyte::@3->print_char] + //SEG337 [74] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@3->print_char#0] -- register_copy + //SEG338 [74] phi (byte) print_char::ch#5 = (byte) ' ' [phi:print_sbyte::@3->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG337 [164] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] - //SEG338 [164] phi (signed byte) print_sbyte::b#7 = (signed byte) print_sbyte::b#10 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy - //SEG339 print_sbyte::@2 + //SEG339 [166] phi from print_sbyte::@3 print_sbyte::@4 to print_sbyte::@2 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2] + //SEG340 [166] phi (signed byte) print_sbyte::b#7 = (signed byte) print_sbyte::b#10 [phi:print_sbyte::@3/print_sbyte::@4->print_sbyte::@2#0] -- register_copy + //SEG341 print_sbyte::@2 b2: - //SEG340 [165] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#7 - //SEG341 [166] call print_byte - //SEG342 [64] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] - //SEG343 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy - //SEG344 [64] phi (byte) print_byte::b#7 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy + //SEG342 [167] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#7 + //SEG343 [168] call print_byte + //SEG344 [66] phi from print_sbyte::@2 to print_byte [phi:print_sbyte::@2->print_byte] + //SEG345 [66] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#18 [phi:print_sbyte::@2->print_byte#0] -- register_copy + //SEG346 [66] phi (byte) print_byte::b#7 = (byte~) print_byte::b#9 [phi:print_sbyte::@2->print_byte#1] -- register_copy jsr print_byte - //SEG345 print_sbyte::@return - //SEG346 [167] return + //SEG347 print_sbyte::@return + //SEG348 [169] return rts - //SEG347 [168] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] - //SEG348 print_sbyte::@1 + //SEG349 [170] phi from print_sbyte to print_sbyte::@1 [phi:print_sbyte->print_sbyte::@1] + //SEG350 print_sbyte::@1 b1: - //SEG349 [169] call print_char - //SEG350 [72] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] - //SEG351 [72] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy - //SEG352 [72] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 + //SEG351 [171] call print_char + //SEG352 [74] phi from print_sbyte::@1 to print_char [phi:print_sbyte::@1->print_char] + //SEG353 [74] phi (byte*) print_char_cursor#82 = (byte*) print_char_cursor#132 [phi:print_sbyte::@1->print_char#0] -- register_copy + //SEG354 [74] phi (byte) print_char::ch#5 = (byte) '-' [phi:print_sbyte::@1->print_char#1] -- vbuaa=vbuc1 lda #'-' jsr print_char - //SEG353 print_sbyte::@4 - //SEG354 [170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 -- vbsz1=_neg_vbsz1 + //SEG355 print_sbyte::@4 + //SEG356 [172] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10 -- vbsz1=_neg_vbsz1 lda b eor #$ff clc @@ -10122,7 +10206,7 @@ print_sbyte: { sta b jmp b2 } -//SEG355 div8s +//SEG357 div8s // Perform division on two signed 8-bit numbers // Returns dividend/divisor. // The remainder will be set into the global variable rem8s. @@ -10132,121 +10216,121 @@ print_sbyte: { // div8s(signed byte register(Y) dividend, signed byte register(X) divisor) div8s: { .label neg = $10 - //SEG356 [171] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1 -- vbsyy_lt_0_then_la1 + //SEG358 [173] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1 -- vbsyy_lt_0_then_la1 cpy #0 bmi b1 - //SEG357 div8s::@7 - //SEG358 [172] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 - //SEG359 [173] phi from div8s::@7 to div8s::@2 [phi:div8s::@7->div8s::@2] - //SEG360 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#8 [phi:div8s::@7->div8s::@2#0] -- register_copy - //SEG361 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8s::@7->div8s::@2#1] -- vbuz1=vbuc1 + //SEG359 div8s::@7 + //SEG360 [174] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0 + //SEG361 [175] phi from div8s::@7 to div8s::@2 [phi:div8s::@7->div8s::@2] + //SEG362 [175] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#8 [phi:div8s::@7->div8s::@2#0] -- register_copy + //SEG363 [175] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div8s::@7->div8s::@2#1] -- vbuz1=vbuc1 lda #0 sta neg - //SEG362 div8s::@2 + //SEG364 div8s::@2 b2: - //SEG363 [174] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3 -- vbsxx_lt_0_then_la1 + //SEG365 [176] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3 -- vbsxx_lt_0_then_la1 cpx #0 bmi b3 - //SEG364 div8s::@8 - //SEG365 [175] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 - //SEG366 [176] phi from div8s::@3 div8s::@8 to div8s::@4 [phi:div8s::@3/div8s::@8->div8s::@4] - //SEG367 [176] phi (byte) div8s::neg#4 = (byte) div8s::neg#2 [phi:div8s::@3/div8s::@8->div8s::@4#0] -- register_copy - //SEG368 [176] phi (byte) div8s::divisoru#3 = (byte~) div8s::divisoru#4 [phi:div8s::@3/div8s::@8->div8s::@4#1] -- register_copy - //SEG369 div8s::@4 + //SEG366 div8s::@8 + //SEG367 [177] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0 + //SEG368 [178] phi from div8s::@3 div8s::@8 to div8s::@4 [phi:div8s::@3/div8s::@8->div8s::@4] + //SEG369 [178] phi (byte) div8s::neg#4 = (byte) div8s::neg#2 [phi:div8s::@3/div8s::@8->div8s::@4#0] -- register_copy + //SEG370 [178] phi (byte) div8s::divisoru#3 = (byte~) div8s::divisoru#4 [phi:div8s::@3/div8s::@8->div8s::@4#1] -- register_copy + //SEG371 div8s::@4 b4: - //SEG370 [177] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuaa=vbuyy + //SEG372 [179] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3 -- vbuaa=vbuyy tya - //SEG371 [178] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 - //SEG372 [179] call div8u - //SEG373 [194] phi from div8s::@4 to div8u [phi:div8s::@4->div8u] - //SEG374 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#0 [phi:div8s::@4->div8u#0] -- register_copy - //SEG375 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8s::@4->div8u#1] -- register_copy + //SEG373 [180] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3 + //SEG374 [181] call div8u + //SEG375 [196] phi from div8s::@4 to div8u [phi:div8s::@4->div8u] + //SEG376 [196] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#0 [phi:div8s::@4->div8u#0] -- register_copy + //SEG377 [196] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#0 [phi:div8s::@4->div8u#1] -- register_copy jsr div8u - //SEG376 [180] (byte) div8u::return#2 ← (byte) div8u::return#0 - //SEG377 div8s::@6 - //SEG378 [181] (byte) div8s::resultu#0 ← (byte) div8u::return#2 -- vbuyy=vbuaa + //SEG378 [182] (byte) div8u::return#2 ← (byte) div8u::return#0 + //SEG379 div8s::@6 + //SEG380 [183] (byte) div8s::resultu#0 ← (byte) div8u::return#2 -- vbuyy=vbuaa tay - //SEG379 [182] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@9 -- vbuz1_eq_0_then_la1 + //SEG381 [184] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@9 -- vbuz1_eq_0_then_la1 lda neg cmp #0 beq b9 - //SEG380 div8s::@5 - //SEG381 [183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 -- vbsxx=_neg_vbsxx + //SEG382 div8s::@5 + //SEG383 [185] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17 -- vbsxx=_neg_vbsxx txa eor #$ff clc adc #1 tax - //SEG382 [184] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 -- vbsaa=_neg_vbsyy + //SEG384 [186] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0 -- vbsaa=_neg_vbsyy tya eor #$ff clc adc #1 - //SEG383 [185] phi from div8s::@5 div8s::@9 to div8s::@return [phi:div8s::@5/div8s::@9->div8s::@return] - //SEG384 [185] phi (signed byte) rem8s#3 = (signed byte) rem8s#2 [phi:div8s::@5/div8s::@9->div8s::@return#0] -- register_copy - //SEG385 [185] phi (signed byte) div8s::return#2 = (signed byte) div8s::return#1 [phi:div8s::@5/div8s::@9->div8s::@return#1] -- register_copy - //SEG386 div8s::@return - //SEG387 [186] return + //SEG385 [187] phi from div8s::@5 div8s::@9 to div8s::@return [phi:div8s::@5/div8s::@9->div8s::@return] + //SEG386 [187] phi (signed byte) rem8s#3 = (signed byte) rem8s#2 [phi:div8s::@5/div8s::@9->div8s::@return#0] -- register_copy + //SEG387 [187] phi (signed byte) div8s::return#2 = (signed byte) div8s::return#1 [phi:div8s::@5/div8s::@9->div8s::@return#1] -- register_copy + //SEG388 div8s::@return + //SEG389 [188] return rts - //SEG388 div8s::@9 + //SEG390 div8s::@9 b9: - //SEG389 [187] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 -- vbsaa=vbsyy + //SEG391 [189] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0 -- vbsaa=vbsyy tya - //SEG390 [188] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 + //SEG392 [190] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17 rts - //SEG391 div8s::@3 + //SEG393 div8s::@3 b3: - //SEG392 [189] (signed byte~) div8s::$8 ← - (signed byte) div8s::divisor#0 -- vbsxx=_neg_vbsxx + //SEG394 [191] (signed byte~) div8s::$8 ← - (signed byte) div8s::divisor#0 -- vbsxx=_neg_vbsxx txa eor #$ff clc adc #1 tax - //SEG393 [190] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG395 [192] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 lda #1 eor neg sta neg - //SEG394 [191] (byte~) div8s::divisoru#4 ← (byte)(signed byte~) div8s::$8 + //SEG396 [193] (byte~) div8s::divisoru#4 ← (byte)(signed byte~) div8s::$8 jmp b4 - //SEG395 div8s::@1 + //SEG397 div8s::@1 b1: - //SEG396 [192] (signed byte~) div8s::$5 ← - (signed byte) div8s::dividend#0 -- vbsaa=_neg_vbsyy + //SEG398 [194] (signed byte~) div8s::$5 ← - (signed byte) div8s::dividend#0 -- vbsaa=_neg_vbsyy tya eor #$ff clc adc #1 - //SEG397 [193] (byte~) div8s::dividendu#7 ← (byte)(signed byte~) div8s::$5 -- vbuyy=vbuaa + //SEG399 [195] (byte~) div8s::dividendu#7 ← (byte)(signed byte~) div8s::$5 -- vbuyy=vbuaa tay - //SEG398 [173] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2] - //SEG399 [173] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy - //SEG400 [173] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:div8s::@1->div8s::@2#1] -- vbuz1=vbuc1 + //SEG400 [175] phi from div8s::@1 to div8s::@2 [phi:div8s::@1->div8s::@2] + //SEG401 [175] phi (byte) div8s::dividendu#3 = (byte~) div8s::dividendu#7 [phi:div8s::@1->div8s::@2#0] -- register_copy + //SEG402 [175] phi (byte) div8s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:div8s::@1->div8s::@2#1] -- vbuz1=vbuc1 lda #1 sta neg jmp b2 } -//SEG401 div8u +//SEG403 div8u // Performs division on two 8 bit unsigned bytes // Returns dividend/divisor. // The remainder will be set into the global variable rem8u // Implemented using simple binary division // div8u(byte register(A) dividend, byte register(X) divisor) div8u: { - //SEG402 [195] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuaa + //SEG404 [197] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2 -- vbuz1=vbuaa sta divr8u.dividend - //SEG403 [196] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuxx + //SEG405 [198] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2 -- vbuz1=vbuxx stx divr8u.divisor - //SEG404 [197] call divr8u - //SEG405 [201] phi from div8u to divr8u [phi:div8u->divr8u] + //SEG406 [199] call divr8u + //SEG407 [203] phi from div8u to divr8u [phi:div8u->divr8u] jsr divr8u - //SEG406 [198] (byte) divr8u::return#0 ← (byte) divr8u::return#1 -- vbuaa=vbuz1 + //SEG408 [200] (byte) divr8u::return#0 ← (byte) divr8u::return#1 -- vbuaa=vbuz1 lda divr8u.return - //SEG407 div8u::@1 - //SEG408 [199] (byte) div8u::return#0 ← (byte) divr8u::return#0 - //SEG409 div8u::@return - //SEG410 [200] return + //SEG409 div8u::@1 + //SEG410 [201] (byte) div8u::return#0 ← (byte) divr8u::return#0 + //SEG411 div8u::@return + //SEG412 [202] return rts } -//SEG411 divr8u +//SEG413 divr8u // Performs division on two 8 bit unsigned bytes and an initial remainder // Returns dividend/divisor. // The final remainder will be set into the global variable rem8u @@ -10257,203 +10341,207 @@ divr8u: { .label divisor = $16 .label quotient = $12 .label return = $12 - //SEG412 [202] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1] - //SEG413 [202] phi (byte) divr8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#0] -- vbuxx=vbuc1 + //SEG414 [204] phi from divr8u to divr8u::@1 [phi:divr8u->divr8u::@1] + //SEG415 [204] phi (byte) divr8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG414 [202] phi (byte) divr8u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1 + //SEG416 [204] phi (byte) divr8u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#1] -- vbuz1=vbuc1 txa sta quotient - //SEG415 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#0 [phi:divr8u->divr8u::@1#2] -- register_copy - //SEG416 [202] phi (byte) divr8u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#3] -- vbuyy=vbuc1 + //SEG417 [204] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#0 [phi:divr8u->divr8u::@1#2] -- register_copy + //SEG418 [204] phi (byte) divr8u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr8u->divr8u::@1#3] -- vbuyy=vbuc1 tay - //SEG417 [202] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1] - //SEG418 [202] phi (byte) divr8u::i#2 = (byte) divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy - //SEG419 [202] phi (byte) divr8u::quotient#3 = (byte) divr8u::return#1 [phi:divr8u::@3->divr8u::@1#1] -- register_copy - //SEG420 [202] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#1 [phi:divr8u::@3->divr8u::@1#2] -- register_copy - //SEG421 [202] phi (byte) divr8u::rem#4 = (byte) divr8u::rem#10 [phi:divr8u::@3->divr8u::@1#3] -- register_copy - //SEG422 divr8u::@1 + //SEG419 [204] phi from divr8u::@3 to divr8u::@1 [phi:divr8u::@3->divr8u::@1] + //SEG420 [204] phi (byte) divr8u::i#2 = (byte) divr8u::i#1 [phi:divr8u::@3->divr8u::@1#0] -- register_copy + //SEG421 [204] phi (byte) divr8u::quotient#3 = (byte) divr8u::return#1 [phi:divr8u::@3->divr8u::@1#1] -- register_copy + //SEG422 [204] phi (byte) divr8u::dividend#2 = (byte) divr8u::dividend#1 [phi:divr8u::@3->divr8u::@1#2] -- register_copy + //SEG423 [204] phi (byte) divr8u::rem#4 = (byte) divr8u::rem#10 [phi:divr8u::@3->divr8u::@1#3] -- register_copy + //SEG424 divr8u::@1 b1: - //SEG423 [203] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_rol_1 + //SEG425 [205] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_rol_1 tya asl tay - //SEG424 [204] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) $80 -- vbuaa=vbuz1_band_vbuc1 + //SEG426 [206] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) $80 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and dividend - //SEG425 [205] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2 -- vbuaa_eq_0_then_la1 + //SEG427 [207] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG426 divr8u::@4 - //SEG427 [206] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bor_vbuc1 + //SEG428 divr8u::@4 + //SEG429 [208] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bor_vbuc1 tya ora #1 tay - //SEG428 [207] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2] - //SEG429 [207] phi (byte) divr8u::rem#5 = (byte) divr8u::rem#1 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy - //SEG430 divr8u::@2 + //SEG430 [209] phi from divr8u::@1 divr8u::@4 to divr8u::@2 [phi:divr8u::@1/divr8u::@4->divr8u::@2] + //SEG431 [209] phi (byte) divr8u::rem#5 = (byte) divr8u::rem#1 [phi:divr8u::@1/divr8u::@4->divr8u::@2#0] -- register_copy + //SEG432 divr8u::@2 b2: - //SEG431 [208] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG433 [210] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl dividend - //SEG432 [209] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG434 [211] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl quotient - //SEG433 [210] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 -- vbuyy_lt_vbuz1_then_la1 + //SEG435 [212] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3 -- vbuyy_lt_vbuz1_then_la1 cpy divisor bcc b3 - //SEG434 divr8u::@5 - //SEG435 [211] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 -- vbuz1=_inc_vbuz1 + //SEG436 divr8u::@5 + //SEG437 [213] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1 -- vbuz1=_inc_vbuz1 inc quotient - //SEG436 [212] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 -- vbuyy=vbuyy_minus_vbuz1 + //SEG438 [214] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0 -- vbuyy=vbuyy_minus_vbuz1 tya sec sbc divisor tay - //SEG437 [213] phi from divr8u::@2 divr8u::@5 to divr8u::@3 [phi:divr8u::@2/divr8u::@5->divr8u::@3] - //SEG438 [213] phi (byte) divr8u::return#1 = (byte) divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy - //SEG439 [213] phi (byte) divr8u::rem#10 = (byte) divr8u::rem#5 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy - //SEG440 divr8u::@3 + //SEG439 [215] phi from divr8u::@2 divr8u::@5 to divr8u::@3 [phi:divr8u::@2/divr8u::@5->divr8u::@3] + //SEG440 [215] phi (byte) divr8u::return#1 = (byte) divr8u::quotient#1 [phi:divr8u::@2/divr8u::@5->divr8u::@3#0] -- register_copy + //SEG441 [215] phi (byte) divr8u::rem#10 = (byte) divr8u::rem#5 [phi:divr8u::@2/divr8u::@5->divr8u::@3#1] -- register_copy + //SEG442 divr8u::@3 b3: - //SEG441 [214] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 -- vbuxx=_inc_vbuxx + //SEG443 [216] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG442 [215] if((byte) divr8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto divr8u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG444 [217] if((byte) divr8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto divr8u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1 - //SEG443 divr8u::@6 - //SEG444 [216] (byte) rem8u#17 ← (byte) divr8u::rem#10 -- vbuxx=vbuyy + //SEG445 divr8u::@6 + //SEG446 [218] (byte) rem8u#17 ← (byte) divr8u::rem#10 -- vbuxx=vbuyy tya tax - //SEG445 divr8u::@return - //SEG446 [217] return + //SEG447 divr8u::@return + //SEG448 [219] return rts } -//SEG447 test_16u +//SEG449 test_16u test_16u: { .label dividend = 5 .label divisor = $c .label res = $e .label i = 2 - //SEG448 [219] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] - //SEG449 [219] phi (byte) test_16u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#0] -- vbuz1=vbuc1 + //SEG450 [221] phi from test_16u to test_16u::@1 [phi:test_16u->test_16u::@1] + //SEG451 [221] phi (byte) test_16u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_16u->test_16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG450 [219] phi from test_16u::@10 to test_16u::@1 [phi:test_16u::@10->test_16u::@1] - //SEG451 [219] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@10->test_16u::@1#0] -- register_copy - //SEG452 test_16u::@1 + //SEG452 [221] phi from test_16u::@10 to test_16u::@1 [phi:test_16u::@10->test_16u::@1] + //SEG453 [221] phi (byte) test_16u::i#10 = (byte) test_16u::i#1 [phi:test_16u::@10->test_16u::@1#0] -- register_copy + //SEG454 test_16u::@1 b1: - //SEG453 [220] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 - ldy i + //SEG455 [222] (byte) test_16u::$10 ← (byte) test_16u::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + lda i + asl + //SEG456 [223] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::$10) -- vwuz1=pwuc1_derefidx_vbuaa + tay lda dividends,y sta dividend lda dividends+1,y sta dividend+1 - //SEG454 [221] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG457 [224] (byte) test_16u::$11 ← (byte) test_16u::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + lda i + asl + //SEG458 [225] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::$11) -- vwuz1=pwuc1_derefidx_vbuaa + tay lda divisors,y sta divisor lda divisors+1,y sta divisor+1 - //SEG455 [222] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 - //SEG456 [223] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 - //SEG457 [224] call div16u + //SEG459 [226] (word) div16u::dividend#0 ← (word) test_16u::dividend#0 + //SEG460 [227] (word) div16u::divisor#0 ← (word) test_16u::divisor#0 + //SEG461 [228] call div16u jsr div16u - //SEG458 [225] (word) div16u::return#2 ← (word) div16u::return#0 - //SEG459 test_16u::@2 - //SEG460 [226] (word) test_16u::res#0 ← (word) div16u::return#2 - //SEG461 [227] (word) print_word::w#1 ← (word) test_16u::dividend#0 - //SEG462 [228] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG462 [229] (word) div16u::return#2 ← (word) div16u::return#0 + //SEG463 test_16u::@2 + //SEG464 [230] (word) test_16u::res#0 ← (word) div16u::return#2 + //SEG465 [231] (word) print_word::w#1 ← (word) test_16u::dividend#0 + //SEG466 [232] (byte*~) print_char_cursor#166 ← (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 - //SEG463 [229] call print_word - //SEG464 [58] phi from test_16u::@2 to print_word [phi:test_16u::@2->print_word] - //SEG465 [58] phi (byte*) print_char_cursor#135 = (byte*~) print_char_cursor#166 [phi:test_16u::@2->print_word#0] -- register_copy - //SEG466 [58] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:test_16u::@2->print_word#1] -- register_copy + //SEG467 [233] call print_word + //SEG468 [60] phi from test_16u::@2 to print_word [phi:test_16u::@2->print_word] + //SEG469 [60] phi (byte*) print_char_cursor#135 = (byte*~) print_char_cursor#166 [phi:test_16u::@2->print_word#0] -- register_copy + //SEG470 [60] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:test_16u::@2->print_word#1] -- register_copy jsr print_word - //SEG467 [230] phi from test_16u::@2 to test_16u::@3 [phi:test_16u::@2->test_16u::@3] - //SEG468 test_16u::@3 - //SEG469 [231] call print_str - //SEG470 [76] phi from test_16u::@3 to print_str [phi:test_16u::@3->print_str] - //SEG471 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_16u::@3->print_str#0] -- pbuz1=pbuc1 + //SEG471 [234] phi from test_16u::@2 to test_16u::@3 [phi:test_16u::@2->test_16u::@3] + //SEG472 test_16u::@3 + //SEG473 [235] call print_str + //SEG474 [78] phi from test_16u::@3 to print_str [phi:test_16u::@3->print_str] + //SEG475 [78] phi (byte*) print_str::str#15 = (const string) str [phi:test_16u::@3->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG472 test_16u::@4 - //SEG473 [232] (word) print_word::w#2 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 + //SEG476 test_16u::@4 + //SEG477 [236] (word) print_word::w#2 ← (word) test_16u::divisor#0 -- vwuz1=vwuz2 lda divisor sta print_word.w lda divisor+1 sta print_word.w+1 - //SEG474 [233] call print_word - //SEG475 [58] phi from test_16u::@4 to print_word [phi:test_16u::@4->print_word] - //SEG476 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@4->print_word#0] -- register_copy - //SEG477 [58] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:test_16u::@4->print_word#1] -- register_copy + //SEG478 [237] call print_word + //SEG479 [60] phi from test_16u::@4 to print_word [phi:test_16u::@4->print_word] + //SEG480 [60] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@4->print_word#0] -- register_copy + //SEG481 [60] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:test_16u::@4->print_word#1] -- register_copy jsr print_word - //SEG478 [234] phi from test_16u::@4 to test_16u::@5 [phi:test_16u::@4->test_16u::@5] - //SEG479 test_16u::@5 - //SEG480 [235] call print_str - //SEG481 [76] phi from test_16u::@5 to print_str [phi:test_16u::@5->print_str] - //SEG482 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16u::@5->print_str#0] -- pbuz1=pbuc1 + //SEG482 [238] phi from test_16u::@4 to test_16u::@5 [phi:test_16u::@4->test_16u::@5] + //SEG483 test_16u::@5 + //SEG484 [239] call print_str + //SEG485 [78] phi from test_16u::@5 to print_str [phi:test_16u::@5->print_str] + //SEG486 [78] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16u::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG483 test_16u::@6 - //SEG484 [236] (word) print_word::w#3 ← (word) test_16u::res#0 -- vwuz1=vwuz2 + //SEG487 test_16u::@6 + //SEG488 [240] (word) print_word::w#3 ← (word) test_16u::res#0 -- vwuz1=vwuz2 lda res sta print_word.w lda res+1 sta print_word.w+1 - //SEG485 [237] call print_word - //SEG486 [58] phi from test_16u::@6 to print_word [phi:test_16u::@6->print_word] - //SEG487 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@6->print_word#0] -- register_copy - //SEG488 [58] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:test_16u::@6->print_word#1] -- register_copy + //SEG489 [241] call print_word + //SEG490 [60] phi from test_16u::@6 to print_word [phi:test_16u::@6->print_word] + //SEG491 [60] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@6->print_word#0] -- register_copy + //SEG492 [60] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:test_16u::@6->print_word#1] -- register_copy jsr print_word - //SEG489 [238] phi from test_16u::@6 to test_16u::@7 [phi:test_16u::@6->test_16u::@7] - //SEG490 test_16u::@7 - //SEG491 [239] call print_str - //SEG492 [76] phi from test_16u::@7 to print_str [phi:test_16u::@7->print_str] - //SEG493 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16u::@7->print_str#0] -- pbuz1=pbuc1 + //SEG493 [242] phi from test_16u::@6 to test_16u::@7 [phi:test_16u::@6->test_16u::@7] + //SEG494 test_16u::@7 + //SEG495 [243] call print_str + //SEG496 [78] phi from test_16u::@7 to print_str [phi:test_16u::@7->print_str] + //SEG497 [78] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16u::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG494 test_16u::@8 - //SEG495 [240] (word) print_word::w#4 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG498 test_16u::@8 + //SEG499 [244] (word) print_word::w#4 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta print_word.w lda rem16u+1 sta print_word.w+1 - //SEG496 [241] call print_word - //SEG497 [58] phi from test_16u::@8 to print_word [phi:test_16u::@8->print_word] - //SEG498 [58] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@8->print_word#0] -- register_copy - //SEG499 [58] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:test_16u::@8->print_word#1] -- register_copy + //SEG500 [245] call print_word + //SEG501 [60] phi from test_16u::@8 to print_word [phi:test_16u::@8->print_word] + //SEG502 [60] phi (byte*) print_char_cursor#135 = (byte*) print_char_cursor#128 [phi:test_16u::@8->print_word#0] -- register_copy + //SEG503 [60] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:test_16u::@8->print_word#1] -- register_copy jsr print_word - //SEG500 [242] phi from test_16u::@8 to test_16u::@9 [phi:test_16u::@8->test_16u::@9] - //SEG501 test_16u::@9 - //SEG502 [243] call print_ln - //SEG503 [44] phi from test_16u::@9 to print_ln [phi:test_16u::@9->print_ln] - //SEG504 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16u::@9->print_ln#0] -- register_copy + //SEG504 [246] phi from test_16u::@8 to test_16u::@9 [phi:test_16u::@8->test_16u::@9] + //SEG505 test_16u::@9 + //SEG506 [247] call print_ln + //SEG507 [46] phi from test_16u::@9 to print_ln [phi:test_16u::@9->print_ln] + //SEG508 [46] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#1 [phi:test_16u::@9->print_ln#0] -- register_copy jsr print_ln - //SEG505 test_16u::@10 - //SEG506 [244] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 - lda i - clc - adc #2 - sta i - //SEG507 [245] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $c) goto test_16u::@1 -- vbuz1_neq_vbuc1_then_la1 - lda #$c + //SEG509 test_16u::@10 + //SEG510 [248] (byte) test_16u::i#1 ← ++ (byte) test_16u::i#10 -- vbuz1=_inc_vbuz1 + inc i + //SEG511 [249] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_16u::@1 -- vbuz1_neq_vbuc1_then_la1 + lda #6 cmp i bne b1 - //SEG508 test_16u::@return - //SEG509 [246] return + //SEG512 test_16u::@return + //SEG513 [250] return rts dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff divisors: .word 5, 7, $b, $d, $11, $13 } -//SEG510 div16u +//SEG514 div16u // Performs division on two 16 bit unsigned words // Returns the quotient dividend/divisor. // The remainder will be set into the global variable rem16u @@ -10463,195 +10551,195 @@ div16u: { .label return = $e .label dividend = 5 .label divisor = $c - //SEG511 [247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 -- vwuz1=vwuz2 + //SEG515 [251] (word) divr16u::dividend#1 ← (word) div16u::dividend#0 -- vwuz1=vwuz2 lda dividend sta divr16u.dividend lda dividend+1 sta divr16u.dividend+1 - //SEG512 [248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 - //SEG513 [249] call divr16u - //SEG514 [113] phi from div16u to divr16u [phi:div16u->divr16u] - //SEG515 [113] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:div16u->divr16u#0] -- register_copy - //SEG516 [113] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:div16u->divr16u#1] -- register_copy - //SEG517 [113] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->divr16u#2] -- vwuz1=vbuc1 + //SEG516 [252] (word) divr16u::divisor#0 ← (word) div16u::divisor#0 + //SEG517 [253] call divr16u + //SEG518 [115] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG519 [115] phi (word) divr16u::divisor#6 = (word) divr16u::divisor#0 [phi:div16u->divr16u#0] -- register_copy + //SEG520 [115] phi (word) divr16u::dividend#5 = (word) divr16u::dividend#1 [phi:div16u->divr16u#1] -- register_copy + //SEG521 [115] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div16u->divr16u#2] -- vwuz1=vbuc1 lda #0 sta divr16u.rem sta divr16u.rem+1 jsr divr16u - //SEG518 [250] (word) divr16u::return#2 ← (word) divr16u::return#0 - //SEG519 div16u::@1 - //SEG520 [251] (word) div16u::return#0 ← (word) divr16u::return#2 - //SEG521 div16u::@return - //SEG522 [252] return + //SEG522 [254] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG523 div16u::@1 + //SEG524 [255] (word) div16u::return#0 ← (word) divr16u::return#2 + //SEG525 div16u::@return + //SEG526 [256] return rts } -//SEG523 test_8u +//SEG527 test_8u test_8u: { .label dividend = 7 .label divisor = $10 .label res = $11 .label i = 2 - //SEG524 [254] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1] - //SEG525 [254] phi (byte*) print_line_cursor#41 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 + //SEG528 [258] phi from test_8u to test_8u::@1 [phi:test_8u->test_8u::@1] + //SEG529 [258] phi (byte*) print_line_cursor#41 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:test_8u->test_8u::@1#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG526 [254] phi (byte*) print_char_cursor#138 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 + //SEG530 [258] phi (byte*) print_char_cursor#138 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:test_8u->test_8u::@1#1] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG527 [254] phi (byte) test_8u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 + //SEG531 [258] phi (byte) test_8u::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:test_8u->test_8u::@1#2] -- vbuz1=vbuc1 lda #0 sta i - //SEG528 test_8u::@1 + //SEG532 test_8u::@1 b1: - //SEG529 [255] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG533 [259] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda dividends,y sta dividend - //SEG530 [256] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG534 [260] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10) -- vbuz1=pbuc1_derefidx_vbuz2 lda divisors,y sta divisor - //SEG531 [257] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuaa=vbuz1 + //SEG535 [261] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0 -- vbuaa=vbuz1 lda dividend - //SEG532 [258] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuxx=vbuz1 + //SEG536 [262] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0 -- vbuxx=vbuz1 ldx divisor - //SEG533 [259] call div8u - //SEG534 [194] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] - //SEG535 [194] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#1 [phi:test_8u::@1->div8u#0] -- register_copy - //SEG536 [194] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:test_8u::@1->div8u#1] -- register_copy + //SEG537 [263] call div8u + //SEG538 [196] phi from test_8u::@1 to div8u [phi:test_8u::@1->div8u] + //SEG539 [196] phi (byte) div8u::divisor#2 = (byte) div8u::divisor#1 [phi:test_8u::@1->div8u#0] -- register_copy + //SEG540 [196] phi (byte) div8u::dividend#2 = (byte) div8u::dividend#1 [phi:test_8u::@1->div8u#1] -- register_copy jsr div8u - //SEG537 [260] (byte) div8u::return#3 ← (byte) div8u::return#0 - //SEG538 test_8u::@2 - //SEG539 [261] (byte) test_8u::res#0 ← (byte) div8u::return#3 -- vbuz1=vbuaa + //SEG541 [264] (byte) div8u::return#3 ← (byte) div8u::return#0 + //SEG542 test_8u::@2 + //SEG543 [265] (byte) test_8u::res#0 ← (byte) div8u::return#3 -- vbuz1=vbuaa sta res - //SEG540 [262] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 - //SEG541 [263] call print_byte - //SEG542 [64] phi from test_8u::@2 to print_byte [phi:test_8u::@2->print_byte] - //SEG543 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#138 [phi:test_8u::@2->print_byte#0] -- register_copy - //SEG544 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#3 [phi:test_8u::@2->print_byte#1] -- register_copy + //SEG544 [266] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0 + //SEG545 [267] call print_byte + //SEG546 [66] phi from test_8u::@2 to print_byte [phi:test_8u::@2->print_byte] + //SEG547 [66] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#138 [phi:test_8u::@2->print_byte#0] -- register_copy + //SEG548 [66] phi (byte) print_byte::b#7 = (byte) print_byte::b#3 [phi:test_8u::@2->print_byte#1] -- register_copy jsr print_byte - //SEG545 [264] phi from test_8u::@2 to test_8u::@3 [phi:test_8u::@2->test_8u::@3] - //SEG546 test_8u::@3 - //SEG547 [265] call print_str - //SEG548 [76] phi from test_8u::@3 to print_str [phi:test_8u::@3->print_str] - //SEG549 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_8u::@3->print_str#0] -- pbuz1=pbuc1 + //SEG549 [268] phi from test_8u::@2 to test_8u::@3 [phi:test_8u::@2->test_8u::@3] + //SEG550 test_8u::@3 + //SEG551 [269] call print_str + //SEG552 [78] phi from test_8u::@3 to print_str [phi:test_8u::@3->print_str] + //SEG553 [78] phi (byte*) print_str::str#15 = (const string) str [phi:test_8u::@3->print_str#0] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG550 test_8u::@4 - //SEG551 [266] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 + //SEG554 test_8u::@4 + //SEG555 [270] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0 -- vbuz1=vbuz2 lda divisor sta print_byte.b - //SEG552 [267] call print_byte - //SEG553 [64] phi from test_8u::@4 to print_byte [phi:test_8u::@4->print_byte] - //SEG554 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@4->print_byte#0] -- register_copy - //SEG555 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#4 [phi:test_8u::@4->print_byte#1] -- register_copy + //SEG556 [271] call print_byte + //SEG557 [66] phi from test_8u::@4 to print_byte [phi:test_8u::@4->print_byte] + //SEG558 [66] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@4->print_byte#0] -- register_copy + //SEG559 [66] phi (byte) print_byte::b#7 = (byte) print_byte::b#4 [phi:test_8u::@4->print_byte#1] -- register_copy jsr print_byte - //SEG556 [268] phi from test_8u::@4 to test_8u::@5 [phi:test_8u::@4->test_8u::@5] - //SEG557 test_8u::@5 - //SEG558 [269] call print_str - //SEG559 [76] phi from test_8u::@5 to print_str [phi:test_8u::@5->print_str] - //SEG560 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8u::@5->print_str#0] -- pbuz1=pbuc1 + //SEG560 [272] phi from test_8u::@4 to test_8u::@5 [phi:test_8u::@4->test_8u::@5] + //SEG561 test_8u::@5 + //SEG562 [273] call print_str + //SEG563 [78] phi from test_8u::@5 to print_str [phi:test_8u::@5->print_str] + //SEG564 [78] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8u::@5->print_str#0] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG561 test_8u::@6 - //SEG562 [270] (byte) print_byte::b#5 ← (byte) test_8u::res#0 -- vbuz1=vbuz2 + //SEG565 test_8u::@6 + //SEG566 [274] (byte) print_byte::b#5 ← (byte) test_8u::res#0 -- vbuz1=vbuz2 lda res sta print_byte.b - //SEG563 [271] call print_byte - //SEG564 [64] phi from test_8u::@6 to print_byte [phi:test_8u::@6->print_byte] - //SEG565 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@6->print_byte#0] -- register_copy - //SEG566 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#5 [phi:test_8u::@6->print_byte#1] -- register_copy + //SEG567 [275] call print_byte + //SEG568 [66] phi from test_8u::@6 to print_byte [phi:test_8u::@6->print_byte] + //SEG569 [66] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@6->print_byte#0] -- register_copy + //SEG570 [66] phi (byte) print_byte::b#7 = (byte) print_byte::b#5 [phi:test_8u::@6->print_byte#1] -- register_copy jsr print_byte - //SEG567 [272] phi from test_8u::@6 to test_8u::@7 [phi:test_8u::@6->test_8u::@7] - //SEG568 test_8u::@7 - //SEG569 [273] call print_str - //SEG570 [76] phi from test_8u::@7 to print_str [phi:test_8u::@7->print_str] - //SEG571 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8u::@7->print_str#0] -- pbuz1=pbuc1 + //SEG571 [276] phi from test_8u::@6 to test_8u::@7 [phi:test_8u::@6->test_8u::@7] + //SEG572 test_8u::@7 + //SEG573 [277] call print_str + //SEG574 [78] phi from test_8u::@7 to print_str [phi:test_8u::@7->print_str] + //SEG575 [78] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8u::@7->print_str#0] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG572 test_8u::@8 - //SEG573 [274] (byte) print_byte::b#6 ← (byte) rem8u#17 -- vbuz1=vbuxx + //SEG576 test_8u::@8 + //SEG577 [278] (byte) print_byte::b#6 ← (byte) rem8u#17 -- vbuz1=vbuxx stx print_byte.b - //SEG574 [275] call print_byte - //SEG575 [64] phi from test_8u::@8 to print_byte [phi:test_8u::@8->print_byte] - //SEG576 [64] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@8->print_byte#0] -- register_copy - //SEG577 [64] phi (byte) print_byte::b#7 = (byte) print_byte::b#6 [phi:test_8u::@8->print_byte#1] -- register_copy + //SEG578 [279] call print_byte + //SEG579 [66] phi from test_8u::@8 to print_byte [phi:test_8u::@8->print_byte] + //SEG580 [66] phi (byte*) print_char_cursor#136 = (byte*) print_char_cursor#128 [phi:test_8u::@8->print_byte#0] -- register_copy + //SEG581 [66] phi (byte) print_byte::b#7 = (byte) print_byte::b#6 [phi:test_8u::@8->print_byte#1] -- register_copy jsr print_byte - //SEG578 [276] phi from test_8u::@8 to test_8u::@9 [phi:test_8u::@8->test_8u::@9] - //SEG579 test_8u::@9 - //SEG580 [277] call print_ln - //SEG581 [44] phi from test_8u::@9 to print_ln [phi:test_8u::@9->print_ln] - //SEG582 [44] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#41 [phi:test_8u::@9->print_ln#0] -- register_copy + //SEG582 [280] phi from test_8u::@8 to test_8u::@9 [phi:test_8u::@8->test_8u::@9] + //SEG583 test_8u::@9 + //SEG584 [281] call print_ln + //SEG585 [46] phi from test_8u::@9 to print_ln [phi:test_8u::@9->print_ln] + //SEG586 [46] phi (byte*) print_line_cursor#39 = (byte*) print_line_cursor#41 [phi:test_8u::@9->print_ln#0] -- register_copy jsr print_ln - //SEG583 test_8u::@10 - //SEG584 [278] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 -- vbuz1=_inc_vbuz1 + //SEG587 test_8u::@10 + //SEG588 [282] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10 -- vbuz1=_inc_vbuz1 inc i - //SEG585 [279] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@11 -- vbuz1_neq_vbuc1_then_la1 + //SEG589 [283] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@11 -- vbuz1_neq_vbuc1_then_la1 lda #6 cmp i bne b11 - //SEG586 test_8u::@return - //SEG587 [280] return + //SEG590 test_8u::@return + //SEG591 [284] return rts - //SEG588 test_8u::@11 + //SEG592 test_8u::@11 b11: - //SEG589 [281] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG593 [285] (byte*~) print_char_cursor#188 ← (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 - //SEG590 [254] phi from test_8u::@11 to test_8u::@1 [phi:test_8u::@11->test_8u::@1] - //SEG591 [254] phi (byte*) print_line_cursor#41 = (byte*) print_line_cursor#1 [phi:test_8u::@11->test_8u::@1#0] -- register_copy - //SEG592 [254] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@11->test_8u::@1#1] -- register_copy - //SEG593 [254] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@11->test_8u::@1#2] -- register_copy + //SEG594 [258] phi from test_8u::@11 to test_8u::@1 [phi:test_8u::@11->test_8u::@1] + //SEG595 [258] phi (byte*) print_line_cursor#41 = (byte*) print_line_cursor#1 [phi:test_8u::@11->test_8u::@1#0] -- register_copy + //SEG596 [258] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@11->test_8u::@1#1] -- register_copy + //SEG597 [258] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@11->test_8u::@1#2] -- register_copy jmp b1 dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff divisors: .byte 5, 7, $b, $d, $11, $13 } -//SEG594 print_cls +//SEG598 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 3 - //SEG595 [283] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG596 [283] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG599 [287] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG600 [287] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) $400 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - //SEG597 [283] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG598 [283] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG599 print_cls::@1 + //SEG601 [287] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG602 [287] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG603 print_cls::@1 b1: - //SEG600 [284] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG604 [288] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG601 [285] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG605 [289] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG602 [286] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG606 [290] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 lda sc cmp #<$400+$3e8 bne b1 - //SEG603 print_cls::@return - //SEG604 [287] return + //SEG607 print_cls::@return + //SEG608 [291] return rts } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/test-division.sym b/src/test/ref/test-division.sym index 92ef770ee..6e0fbe3f5 100644 --- a/src/test/ref/test-division.sym +++ b/src/test/ref/test-division.sym @@ -234,7 +234,7 @@ (byte[]) print_hextab (const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor -(byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:3 3.9099999999999993 +(byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:3 3.759615384615385 (byte*) print_line_cursor#20 print_line_cursor zp ZP_WORD:3 204.0 (byte*) print_line_cursor#39 print_line_cursor zp ZP_WORD:3 46.0 (byte*) print_line_cursor#41 print_line_cursor zp ZP_WORD:3 0.9565217391304348 @@ -303,6 +303,8 @@ (const string) str1 str1 = (string) " = @" (const string) str2 str2 = (string) " @" (void()) test_16s() +(byte) test_16s::$16 reg byte a 22.0 +(byte) test_16s::$17 reg byte a 22.0 (label) test_16s::@1 (label) test_16s::@10 (label) test_16s::@2 @@ -315,7 +317,7 @@ (label) test_16s::@9 (label) test_16s::@return (signed word) test_16s::dividend -(signed word) test_16s::dividend#0 dividend zp ZP_WORD:5 4.714285714285714 +(signed word) test_16s::dividend#0 dividend zp ZP_WORD:5 4.125 (signed word[]) test_16s::dividends (const signed word[]) test_16s::dividends#0 dividends = { (word/signed word/dword/signed dword) $7fff, (word/signed word/dword/signed dword) $7fff, -(word/signed word/dword/signed dword) $7fff, -(word/signed word/dword/signed dword) $7fff, (word/signed word/dword/signed dword) $7fff, -(word/signed word/dword/signed dword) $7fff } (signed word) test_16s::divisor @@ -324,10 +326,12 @@ (const signed word[]) test_16s::divisors#0 divisors = { (byte/signed byte/word/signed word/dword/signed dword) 5, -(byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) $b, -(byte/signed byte/word/signed word/dword/signed dword) $d, -(byte/signed byte/word/signed word/dword/signed dword) $11, (byte/signed byte/word/signed word/dword/signed dword) $13 } (byte) test_16s::i (byte) test_16s::i#1 i zp ZP_BYTE:2 16.5 -(byte) test_16s::i#10 i zp ZP_BYTE:2 1.76 +(byte) test_16s::i#10 i zp ZP_BYTE:2 1.6296296296296295 (signed word) test_16s::res (signed word) test_16s::res#0 res zp ZP_WORD:14 2.2 (void()) test_16u() +(byte) test_16u::$10 reg byte a 22.0 +(byte) test_16u::$11 reg byte a 22.0 (label) test_16u::@1 (label) test_16u::@10 (label) test_16u::@2 @@ -340,7 +344,7 @@ (label) test_16u::@9 (label) test_16u::@return (word) test_16u::dividend -(word) test_16u::dividend#0 dividend zp ZP_WORD:5 4.714285714285714 +(word) test_16u::dividend#0 dividend zp ZP_WORD:5 4.125 (word[]) test_16u::dividends (const word[]) test_16u::dividends#0 dividends = { (word/dword/signed dword) $ffff, (word/dword/signed dword) $ffff, (word/dword/signed dword) $ffff, (word/dword/signed dword) $ffff, (word/dword/signed dword) $ffff, (word/dword/signed dword) $ffff } (word) test_16u::divisor @@ -349,7 +353,7 @@ (const word[]) test_16u::divisors#0 divisors = { (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) $b, (byte/signed byte/word/signed word/dword/signed dword) $d, (byte/signed byte/word/signed word/dword/signed dword) $11, (byte/signed byte/word/signed word/dword/signed dword) $13 } (byte) test_16u::i (byte) test_16u::i#1 i zp ZP_BYTE:2 16.5 -(byte) test_16u::i#10 i zp ZP_BYTE:2 1.76 +(byte) test_16u::i#10 i zp ZP_BYTE:2 1.6296296296296295 (word) test_16u::res (word) test_16u::res#0 res zp ZP_WORD:14 2.2 (void()) test_8s() @@ -426,6 +430,8 @@ reg byte y [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::re zp ZP_BYTE:17 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 test_8u::res#0 ] zp ZP_BYTE:18 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ] reg byte x [ divr8u::i#2 divr8u::i#1 ] +reg byte a [ test_16s::$16 ] +reg byte a [ test_16s::$17 ] zp ZP_WORD:19 [ test_16s::divisor#0 div16s::divisor#0 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] @@ -444,4 +450,6 @@ reg byte a [ divr8u::return#0 ] reg byte a [ div8u::return#0 ] reg byte a [ divr8u::$1 ] reg byte x [ rem8u#17 ] +reg byte a [ test_16u::$10 ] +reg byte a [ test_16u::$11 ] reg byte a [ div8u::return#3 ]