From ed2d99233322d7b513102a1d0b449be5a0227686 Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Fri, 1 Mar 2019 00:27:26 +0100 Subject: [PATCH] Fixed problem, where assigning to low/high value left an unused intermediate variable. Closes #129 --- .../kickc/passes/Pass1FixLValuesLoHi.java | 8 + .../kickc/passes/Pass2AliasElimination.java | 2 +- .../Pass2ConditionalAndOrRewriting.java | 4 +- .../Pass2ConditionalJumpSimplification.java | 4 +- .../passes/Pass2ConstantIdentification.java | 2 +- .../kickc/passes/Pass2ConstantInlining.java | 2 +- .../passes/Pass2IdenticalPhiElimination.java | 2 +- .../kickc/passes/Pass2NopCastElimination.java | 2 +- .../passes/Pass2RedundantPhiElimination.java | 4 +- .../kickc/passes/Pass2SsaOptimization.java | 17 +- .../passes/Pass2UnaryNotSimplification.java | 4 +- .../kickc/passes/Pass3PhiMemCoalesce.java | 4 +- src/test/ref/bitmap-plotter.asm | 1 - src/test/ref/bitmap-plotter.cfg | 98 +- src/test/ref/bitmap-plotter.log | 877 ++-- src/test/ref/bitmap-plotter.sym | 10 +- src/test/ref/examples/rotate/rotate.cfg | 126 +- src/test/ref/examples/rotate/rotate.log | 1078 +++-- src/test/ref/examples/rotate/rotate.sym | 8 +- .../ref/examples/scrolllogo/scrolllogo.asm | 5 - .../ref/examples/scrolllogo/scrolllogo.cfg | 227 +- .../ref/examples/scrolllogo/scrolllogo.log | 2195 +++++---- .../ref/examples/scrolllogo/scrolllogo.sym | 3 +- .../ref/examples/sinplotter/sine-plotter.asm | 5 - .../ref/examples/sinplotter/sine-plotter.cfg | 299 +- .../ref/examples/sinplotter/sine-plotter.log | 2727 ++++++----- .../ref/examples/sinplotter/sine-plotter.sym | 3 +- src/test/ref/sinusgenscale8.cfg | 215 +- src/test/ref/sinusgenscale8.log | 1917 ++++---- src/test/ref/sinusgenscale8.sym | 2 - src/test/ref/test-lowhigh.asm | 11 - src/test/ref/test-lowhigh.cfg | 160 +- src/test/ref/test-lowhigh.log | 1573 +++---- src/test/ref/test-lowhigh.sym | 12 +- src/test/ref/test-multiply-16bit.asm | 20 - src/test/ref/test-multiply-16bit.cfg | 378 +- src/test/ref/test-multiply-16bit.log | 3672 +++++++-------- src/test/ref/test-multiply-16bit.sym | 18 +- src/test/ref/test-multiply-8bit.cfg | 440 +- src/test/ref/test-multiply-8bit.log | 4134 ++++++++--------- src/test/ref/test-multiply-8bit.sym | 18 +- 41 files changed, 9875 insertions(+), 10412 deletions(-) diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1FixLValuesLoHi.java b/src/main/java/dk/camelot64/kickc/passes/Pass1FixLValuesLoHi.java index 4cc965e74..3ebb978f8 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1FixLValuesLoHi.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1FixLValuesLoHi.java @@ -31,6 +31,8 @@ public class Pass1FixLValuesLoHi extends Pass1Base { @Override public boolean step() { + List intermediates = new ArrayList<>(); + ProgramScope programScope = getProgram().getScope(); for(ControlFlowBlock block : getProgram().getGraph().getAllBlocks()) { List statements = block.getStatements(); @@ -41,6 +43,7 @@ public class Pass1FixLValuesLoHi extends Pass1Base { StatementLValue statementLValue = (StatementLValue) statement; LvalueIntermediate intermediate = (LvalueIntermediate) statementLValue.getlValue(); StatementAssignment intermediateAssignment = getProgram().getGraph().getAssignment(intermediate.getVariable()); + intermediates.add(intermediate.getVariable()); if(Operators.LOWBYTE.equals(intermediateAssignment.getOperator()) && intermediateAssignment.getrValue1() == null) { // Found assignment to an intermediate low byte lValue 0); } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2ConditionalAndOrRewriting.java b/src/main/java/dk/camelot64/kickc/passes/Pass2ConditionalAndOrRewriting.java index c5a118276..e32936584 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2ConditionalAndOrRewriting.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2ConditionalAndOrRewriting.java @@ -28,8 +28,8 @@ public class Pass2ConditionalAndOrRewriting extends Pass2SsaOptimization { if(obsoleteConditionVar!=null) { Collection obsoleteVars = new ArrayList<>(); obsoleteVars.add(obsoleteConditionVar); - removeAssignments(obsoleteVars); - deleteSymbols(obsoleteVars); + removeAssignments(getGraph(), obsoleteVars); + deleteSymbols(getScope(), obsoleteVars); return true; } else { return false; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2ConditionalJumpSimplification.java b/src/main/java/dk/camelot64/kickc/passes/Pass2ConditionalJumpSimplification.java index 54297e6ea..d65c51531 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2ConditionalJumpSimplification.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2ConditionalJumpSimplification.java @@ -26,8 +26,8 @@ public class Pass2ConditionalJumpSimplification extends Pass2SsaOptimization { final Map assignments = getAllAssignments(); final Map> usages = getAllUsages(); final List simpleConditionVars = getSimpleConditions(assignments, usages); - removeAssignments(simpleConditionVars); - deleteSymbols(simpleConditionVars); + removeAssignments(getGraph(), simpleConditionVars); + deleteSymbols(getScope(), simpleConditionVars); return (simpleConditionVars.size() > 0); } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantIdentification.java b/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantIdentification.java index 99a43c56b..a2a360398 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantIdentification.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantIdentification.java @@ -90,7 +90,7 @@ public class Pass2ConstantIdentification extends Pass2SsaOptimization { getLog().append("Constant " + constantVar.toString(getProgram()) + " = " + constantVar.getValue()); } // Remove assignments to constants in the code - removeAssignments(constants.keySet()); + removeAssignments(getGraph(), constants.keySet()); // Replace VariableRef's with ConstantRef's replaceVariables(constAliases); return constants.size() > 0; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantInlining.java b/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantInlining.java index bbca204d5..4686b3df3 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantInlining.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantInlining.java @@ -51,7 +51,7 @@ public class Pass2ConstantInlining extends Pass2SsaOptimization { // Replace all usages of the constants in the control flow graph or symbol table replaceVariables(inline); // Remove from symbol table - deleteSymbols(inline.keySet()); + deleteSymbols(getScope(), inline.keySet()); for(ConstantRef constantRef : inline.keySet()) { getLog().append("Constant inlined " + constantRef.toString() + " = " + inline.get(constantRef).toString(getProgram())); diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2IdenticalPhiElimination.java b/src/main/java/dk/camelot64/kickc/passes/Pass2IdenticalPhiElimination.java index 358325e5a..184008812 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2IdenticalPhiElimination.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2IdenticalPhiElimination.java @@ -57,7 +57,7 @@ public class Pass2IdenticalPhiElimination extends Pass2SsaOptimization { RValue alias = phiIdentical.get(var); getLog().append("Identical Phi Values " + var.toString(getProgram()) + " " + alias.toString(getProgram())); } - deleteSymbols(phiIdentical.keySet()); + deleteSymbols(getScope(), phiIdentical.keySet()); return phiIdentical.size()>0; } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2NopCastElimination.java b/src/main/java/dk/camelot64/kickc/passes/Pass2NopCastElimination.java index c396f90e9..36cbeabf0 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2NopCastElimination.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2NopCastElimination.java @@ -76,7 +76,7 @@ public class Pass2NopCastElimination extends Pass2SsaOptimization { } } replaceVariables(castAliasses); - deleteSymbols(castAliasses.keySet()); + deleteSymbols(getScope(), castAliasses.keySet()); return (castAliasses.size() > 0); } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2RedundantPhiElimination.java b/src/main/java/dk/camelot64/kickc/passes/Pass2RedundantPhiElimination.java index 383aa1a04..74371da2e 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2RedundantPhiElimination.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2RedundantPhiElimination.java @@ -22,13 +22,13 @@ public class Pass2RedundantPhiElimination extends Pass2SsaOptimization { @Override public boolean step() { final Map aliases = findRedundantPhis(); - removeAssignments(aliases.keySet()); + removeAssignments(getGraph(), aliases.keySet()); replaceVariables(aliases); for(VariableRef var : aliases.keySet()) { RValue alias = aliases.get(var); getLog().append("Redundant Phi " + var.toString(getProgram()) + " " + alias.toString(getProgram())); } - deleteSymbols(aliases.keySet()); + deleteSymbols(getScope(), aliases.keySet()); return aliases.size() > 0; } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2SsaOptimization.java b/src/main/java/dk/camelot64/kickc/passes/Pass2SsaOptimization.java index 135b059aa..ded52c7c3 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2SsaOptimization.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2SsaOptimization.java @@ -2,6 +2,7 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; import dk.camelot64.kickc.model.iterator.ProgramValueIterator; +import dk.camelot64.kickc.model.symbols.ProgramScope; import dk.camelot64.kickc.model.values.*; import dk.camelot64.kickc.model.statements.*; import dk.camelot64.kickc.model.symbols.Symbol; @@ -98,8 +99,8 @@ public abstract class Pass2SsaOptimization extends Pass1Base { * * @param variables The variables to eliminate */ - public void removeAssignments(Collection variables) { - for(ControlFlowBlock block : getGraph().getAllBlocks()) { + public static void removeAssignments(ControlFlowGraph graph, Collection variables) { + for(ControlFlowBlock block : graph.getAllBlocks()) { for(Iterator iterator = block.getStatements().iterator(); iterator.hasNext(); ) { Statement statement = iterator.next(); if(statement instanceof StatementAssignment) { @@ -109,13 +110,7 @@ public abstract class Pass2SsaOptimization extends Pass1Base { } } else if(statement instanceof StatementPhiBlock) { StatementPhiBlock phiBlock = (StatementPhiBlock) statement; - Iterator variableIterator = phiBlock.getPhiVariables().iterator(); - while(variableIterator.hasNext()) { - StatementPhiBlock.PhiVariable phiVariable = variableIterator.next(); - if(variables.contains(phiVariable.getVariable())) { - variableIterator.remove(); - } - } + phiBlock.getPhiVariables().removeIf(phiVariable -> variables.contains(phiVariable.getVariable())); if(phiBlock.getPhiVariables().size() == 0) { iterator.remove(); } @@ -124,9 +119,9 @@ public abstract class Pass2SsaOptimization extends Pass1Base { } } - public void deleteSymbols(Collection symbols) { + public static void deleteSymbols(ProgramScope programScope, Collection symbols) { for(SymbolRef symbolRef : symbols) { - Symbol symbol = getScope().getSymbol(symbolRef.getFullName()); + Symbol symbol = programScope.getSymbol(symbolRef.getFullName()); symbol.getScope().remove(symbol); } } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2UnaryNotSimplification.java b/src/main/java/dk/camelot64/kickc/passes/Pass2UnaryNotSimplification.java index 638332c13..9134f0a23 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2UnaryNotSimplification.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2UnaryNotSimplification.java @@ -27,8 +27,8 @@ public class Pass2UnaryNotSimplification extends Pass2SsaOptimization { final VariableReferenceInfos usages = getProgram().getVariableReferenceInfos(); final Map assignments = getAllAssignments(); final List unusedComparisons = optimizeUnaryNots(assignments, usages); - removeAssignments(unusedComparisons); - deleteSymbols(unusedComparisons); + removeAssignments(getGraph(), unusedComparisons); + deleteSymbols(getScope(), unusedComparisons); return (unusedComparisons.size() > 0); } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass3PhiMemCoalesce.java b/src/main/java/dk/camelot64/kickc/passes/Pass3PhiMemCoalesce.java index 4ff7e5c8c..65b5fae89 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass3PhiMemCoalesce.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass3PhiMemCoalesce.java @@ -37,9 +37,9 @@ public class Pass3PhiMemCoalesce extends Pass2SsaOptimization { getLog().append("Created " + phiEquivalenceClasses.size() + " initial phi equivalence classes"); PhiMemCoalescer phiMemCoalescer = new PhiMemCoalescer(phiEquivalenceClasses); phiMemCoalescer.visitGraph(getGraph()); - removeAssignments(phiMemCoalescer.getRemove()); + removeAssignments(getGraph(), phiMemCoalescer.getRemove()); replaceVariables(phiMemCoalescer.getReplace()); - deleteSymbols(phiMemCoalescer.getRemove()); + deleteSymbols(getScope(), phiMemCoalescer.getRemove()); getLog().append("Coalesced down to " + phiEquivalenceClasses.size() + " phi equivalence classes"); return false; } diff --git a/src/test/ref/bitmap-plotter.asm b/src/test/ref/bitmap-plotter.asm index 8daed0b6f..dc94579a1 100644 --- a/src/test/ref/bitmap-plotter.asm +++ b/src/test/ref/bitmap-plotter.asm @@ -56,7 +56,6 @@ plot: { sta plotter_x+1 lda #<0 sta plotter_x - // Needs word arrays arranged as two underlying byte arrays to allow byte* plotter_x = plot_x[x]; - and eventually - byte* plotter = plot_x[x] + plot_y[y]; lda plot_xlo,y sta plotter_x ldy y diff --git a/src/test/ref/bitmap-plotter.cfg b/src/test/ref/bitmap-plotter.cfg index 447b3b479..85d32e8f6 100644 --- a/src/test/ref/bitmap-plotter.cfg +++ b/src/test/ref/bitmap-plotter.cfg @@ -47,80 +47,78 @@ plots::@return: scope:[plots] from plots::@3 plot: scope:[plot] from plots::@1 [23] (byte~) plot::$6 ← *((const byte[256]) plot_xhi#0 + (byte) plot::x#0) [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$6 - [25] (byte~) plot::$1 ← < (byte*) plot::plotter_x#1 - [26] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) - [27] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 - [28] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) - [29] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 - [30] (byte~) plot::$3 ← < (word) plot::plotter_y#1 - [31] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) - [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 - [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 - [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) - [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 + [25] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) + [26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 + [27] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) + [28] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 + [29] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) + [30] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 + [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 + [32] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) + [33] *((byte*) plot::plotter#0) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot - [36] return + [34] return to:@return init_plot_tables: scope:[init_plot_tables] from main::@5 - [37] phi() + [35] phi() to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - [38] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word/dword/signed dword) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) - [38] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word/dword/signed dword) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 - [40] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 - [41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 - [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - [43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [44] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 + [36] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word/dword/signed dword) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) + [36] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word/dword/signed dword) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) + [37] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 + [38] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 + [39] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 + [40] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 + [41] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [42] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 to:init_plot_tables::@2 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10 - [45] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word/dword/signed dword) 128 ) - [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - [47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 + [43] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word/dword/signed dword) 128 ) + [44] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 + [45] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4 - [48] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [48] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 - [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 - [52] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 - [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 - [54] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 + [46] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [46] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [47] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [48] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 + [49] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 + [50] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 + [51] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 + [52] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 + [53] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [54] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 + [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 to:init_plot_tables::@4 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 - [58] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) - [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - [60] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 + [56] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) + [57] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 + [58] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 - [61] return + [59] return to:@return init_plot_tables::@10: scope:[init_plot_tables] from init_plot_tables::@1 - [62] phi() + [60] phi() to:init_plot_tables::@2 init_screen: scope:[init_screen] from main - [63] phi() + [61] phi() to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 - [64] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) - [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 + [62] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) + [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [64] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 + [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 - [68] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) - [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 - [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 + [66] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) + [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 + [68] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 + [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 - [72] return + [70] return to:@return diff --git a/src/test/ref/bitmap-plotter.log b/src/test/ref/bitmap-plotter.log index 86c41ffe1..190f573d7 100644 --- a/src/test/ref/bitmap-plotter.log +++ b/src/test/ref/bitmap-plotter.log @@ -141,16 +141,12 @@ plot: scope:[plot] from plots::@1 (byte) plot::x#1 ← phi( plots::@1/(byte) plot::x#0 ) (byte*) plot::plotter_x#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (byte~) plot::$0 ← > (byte*) plot::plotter_x#0 (byte~) plot::$6 ← *((byte[256]) plot_xhi#0 + (byte) plot::x#1) (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$6 - (byte~) plot::$1 ← < (byte*) plot::plotter_x#1 (byte~) plot::$7 ← *((byte[256]) plot_xlo#0 + (byte) plot::x#1) (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 - (byte~) plot::$2 ← > (word) plot::plotter_y#0 (byte~) plot::$8 ← *((byte[256]) plot_yhi#0 + (byte) plot::y#1) (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$8 - (byte~) plot::$3 ← < (word) plot::plotter_y#1 (byte~) plot::$9 ← *((byte[256]) plot_ylo#0 + (byte) plot::y#1) (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 (byte*~) plot::$4 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 @@ -447,10 +443,6 @@ SYMBOL TABLE SSA (label) main::@7 (label) main::@return (void()) plot((byte) plot::x , (byte) plot::y) -(byte~) plot::$0 -(byte~) plot::$1 -(byte~) plot::$2 -(byte~) plot::$3 (byte*~) plot::$4 (byte~) plot::$5 (byte~) plot::$6 @@ -515,8 +507,8 @@ SYMBOL TABLE SSA Culled Empty Block (label) @6 Successful SSA optimization Pass2CullEmptyBlocks -Inversing boolean not [97] (bool~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [96] (bool~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [116] (bool~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte/signed byte/word/signed word/dword/signed dword) 7 from [115] (bool~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word/dword/signed dword) 7 +Inversing boolean not [93] (bool~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [92] (bool~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [112] (bool~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte/signed byte/word/signed word/dword/signed dword) 7 from [111] (bool~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word/dword/signed dword) 7 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte*) RASTER#3 = (byte*) RASTER#4 (byte*) RASTER#6 Alias (byte*) BGCOL#1 = (byte*) BGCOL#9 (byte*) BGCOL#7 @@ -580,12 +572,12 @@ Redundant Phi (byte*) SCREEN#3 (byte*) SCREEN#2 Successful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) main::$11 [37] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 Simple Condition (bool~) plots::$1 [58] if((byte) plots::i#1<(byte) plots_cnt#0) goto plots::@1 -Simple Condition (bool~) init_plot_tables::$4 [98] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@2 -Simple Condition (bool~) init_plot_tables::$5 [102] if((byte) init_plot_tables::x#1!=rangelast(0,255)) goto init_plot_tables::@1 -Simple Condition (bool~) init_plot_tables::$12 [117] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 -Simple Condition (bool~) init_plot_tables::$15 [121] if((byte) init_plot_tables::y#1!=rangelast(0,255)) goto init_plot_tables::@3 -Simple Condition (bool~) init_screen::$1 [134] if((byte*) init_screen::b#1!=(byte*~) init_screen::$0) goto init_screen::@1 -Simple Condition (bool~) init_screen::$3 [142] if((byte*) init_screen::c#1!=(byte*~) init_screen::$2) goto init_screen::@2 +Simple Condition (bool~) init_plot_tables::$4 [94] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@2 +Simple Condition (bool~) init_plot_tables::$5 [98] if((byte) init_plot_tables::x#1!=rangelast(0,255)) goto init_plot_tables::@1 +Simple Condition (bool~) init_plot_tables::$12 [113] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 +Simple Condition (bool~) init_plot_tables::$15 [117] if((byte) init_plot_tables::y#1!=rangelast(0,255)) goto init_plot_tables::@3 +Simple Condition (bool~) init_screen::$1 [130] if((byte*) init_screen::b#1!=(byte*~) init_screen::$0) goto init_screen::@1 +Simple Condition (bool~) init_screen::$3 [138] if((byte*) init_screen::c#1!=(byte*~) init_screen::$2) goto init_screen::@2 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) D011#0 = ((byte*))53265 Constant (const byte) RST8#0 = 128 @@ -624,8 +616,6 @@ Successful SSA optimization Pass2ConstantIdentification Constant (const byte) main::$0 = BMM#0|DEN#0 Constant (const word) main::$3 = ((word))SCREEN#0 Constant (const word) main::$5 = ((word))BITMAP#0 -Constant (const byte) plot::$0 = >plot::plotter_x#0 -Constant (const byte) plot::$2 = >plot::plotter_y#0 Constant (const byte) init_plot_tables::$1 = >BITMAP#0 Constant (const byte*) init_screen::b#0 = BITMAP#0 Constant (const byte*) init_screen::$0 = BITMAP#0+8192 @@ -713,15 +703,15 @@ Calls in [plots] to plot:19 Created 9 initial phi equivalence classes Coalesced [23] plots::i#4 ← plots::i#1 -Coalesced [60] init_plot_tables::yoffs#7 ← init_plot_tables::yoffs#1 -Coalesced [65] init_plot_tables::y#5 ← init_plot_tables::y#1 -Coalesced [66] init_plot_tables::yoffs#5 ← init_plot_tables::yoffs#4 -Coalesced (already) [67] init_plot_tables::yoffs#6 ← init_plot_tables::yoffs#2 -Coalesced [68] init_plot_tables::x#5 ← init_plot_tables::x#1 -Coalesced [69] init_plot_tables::bits#5 ← init_plot_tables::bits#4 -Coalesced [70] init_plot_tables::bits#6 ← init_plot_tables::bits#1 -Coalesced [81] init_screen::c#3 ← init_screen::c#1 -Coalesced [82] init_screen::b#3 ← init_screen::b#1 +Coalesced [58] init_plot_tables::yoffs#7 ← init_plot_tables::yoffs#1 +Coalesced [63] init_plot_tables::y#5 ← init_plot_tables::y#1 +Coalesced [64] init_plot_tables::yoffs#5 ← init_plot_tables::yoffs#4 +Coalesced (already) [65] init_plot_tables::yoffs#6 ← init_plot_tables::yoffs#2 +Coalesced [66] init_plot_tables::x#5 ← init_plot_tables::x#1 +Coalesced [67] init_plot_tables::bits#5 ← init_plot_tables::bits#4 +Coalesced [68] init_plot_tables::bits#6 ← init_plot_tables::bits#1 +Coalesced [79] init_screen::c#3 ← init_screen::c#1 +Coalesced [80] init_screen::b#3 ← init_screen::b#1 Coalesced down to 7 phi equivalence classes Culled Empty Block (label) plots::@4 Culled Empty Block (label) init_plot_tables::@5 @@ -789,82 +779,80 @@ plots::@return: scope:[plots] from plots::@3 plot: scope:[plot] from plots::@1 [23] (byte~) plot::$6 ← *((const byte[256]) plot_xhi#0 + (byte) plot::x#0) [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$6 - [25] (byte~) plot::$1 ← < (byte*) plot::plotter_x#1 - [26] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) - [27] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 - [28] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) - [29] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 - [30] (byte~) plot::$3 ← < (word) plot::plotter_y#1 - [31] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) - [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 - [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 - [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) - [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 + [25] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) + [26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 + [27] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) + [28] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 + [29] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) + [30] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 + [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 + [32] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) + [33] *((byte*) plot::plotter#0) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot - [36] return + [34] return to:@return init_plot_tables: scope:[init_plot_tables] from main::@5 - [37] phi() + [35] phi() to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - [38] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word/dword/signed dword) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) - [38] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word/dword/signed dword) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 - [40] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 - [41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 - [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - [43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [44] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 + [36] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word/dword/signed dword) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) + [36] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word/dword/signed dword) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) + [37] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 + [38] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 + [39] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 + [40] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 + [41] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [42] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 to:init_plot_tables::@2 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10 - [45] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word/dword/signed dword) 128 ) - [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - [47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 + [43] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word/dword/signed dword) 128 ) + [44] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 + [45] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4 - [48] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [48] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 - [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 - [52] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 - [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 - [54] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 + [46] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [46] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [47] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [48] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 + [49] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 + [50] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 + [51] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 + [52] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 + [53] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [54] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 + [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 to:init_plot_tables::@4 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 - [58] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) - [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - [60] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 + [56] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) + [57] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 + [58] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 - [61] return + [59] return to:@return init_plot_tables::@10: scope:[init_plot_tables] from init_plot_tables::@1 - [62] phi() + [60] phi() to:init_plot_tables::@2 init_screen: scope:[init_screen] from main - [63] phi() + [61] phi() to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 - [64] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) - [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 + [62] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) + [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [64] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 + [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 - [68] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) - [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 - [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 + [66] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) + [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 + [68] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 + [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 - [72] return + [70] return to:@return @@ -915,8 +903,6 @@ VARIABLE REGISTER WEIGHTS (byte*) init_screen::c#2 16.5 (void()) main() (void()) plot((byte) plot::x , (byte) plot::y) -(byte~) plot::$1 20.0 -(byte~) plot::$3 20.0 (byte~) plot::$5 4.0 (byte~) plot::$6 4.0 (byte~) plot::$7 4.0 @@ -926,14 +912,14 @@ VARIABLE REGISTER WEIGHTS (byte*) plot::plotter#0 3.0 (byte*) plot::plotter_x (byte*) plot::plotter_x#1 2.0 -(byte*) plot::plotter_x#2 0.6666666666666666 +(byte*) plot::plotter_x#2 0.8 (word) plot::plotter_y (word) plot::plotter_y#1 2.0 (word) plot::plotter_y#2 4.0 (byte) plot::x -(byte) plot::x#0 8.23076923076923 +(byte) plot::x#0 9.727272727272727 (byte) plot::y -(byte) plot::y#0 11.666666666666664 +(byte) plot::y#0 15.000000000000002 (byte[256]) plot_bit (byte[256]) plot_xhi (byte[256]) plot_xlo @@ -959,12 +945,10 @@ Added variable plot::x#0 to zero page equivalence class [ plot::x#0 ] Added variable plot::y#0 to zero page equivalence class [ plot::y#0 ] Added variable plot::$6 to zero page equivalence class [ plot::$6 ] Added variable plot::plotter_x#1 to zero page equivalence class [ plot::plotter_x#1 ] -Added variable plot::$1 to zero page equivalence class [ plot::$1 ] Added variable plot::$7 to zero page equivalence class [ plot::$7 ] Added variable plot::plotter_x#2 to zero page equivalence class [ plot::plotter_x#2 ] Added variable plot::$8 to zero page equivalence class [ plot::$8 ] Added variable plot::plotter_y#1 to zero page equivalence class [ plot::plotter_y#1 ] -Added variable plot::$3 to zero page equivalence class [ plot::$3 ] Added variable plot::$9 to zero page equivalence class [ plot::$9 ] Added variable plot::plotter_y#2 to zero page equivalence class [ plot::plotter_y#2 ] Added variable plot::plotter#0 to zero page equivalence class [ plot::plotter#0 ] @@ -987,12 +971,10 @@ Complete equivalence classes [ plot::y#0 ] [ plot::$6 ] [ plot::plotter_x#1 ] -[ plot::$1 ] [ plot::$7 ] [ plot::plotter_x#2 ] [ plot::$8 ] [ plot::plotter_y#1 ] -[ plot::$3 ] [ plot::$9 ] [ plot::plotter_y#2 ] [ plot::plotter#0 ] @@ -1014,22 +996,20 @@ Allocated zp ZP_BYTE:12 [ plot::x#0 ] Allocated zp ZP_BYTE:13 [ plot::y#0 ] Allocated zp ZP_BYTE:14 [ plot::$6 ] Allocated zp ZP_WORD:15 [ plot::plotter_x#1 ] -Allocated zp ZP_BYTE:17 [ plot::$1 ] -Allocated zp ZP_BYTE:18 [ plot::$7 ] -Allocated zp ZP_WORD:19 [ plot::plotter_x#2 ] -Allocated zp ZP_BYTE:21 [ plot::$8 ] -Allocated zp ZP_WORD:22 [ plot::plotter_y#1 ] -Allocated zp ZP_BYTE:24 [ plot::$3 ] -Allocated zp ZP_BYTE:25 [ plot::$9 ] -Allocated zp ZP_WORD:26 [ plot::plotter_y#2 ] -Allocated zp ZP_WORD:28 [ plot::plotter#0 ] -Allocated zp ZP_BYTE:30 [ plot::$5 ] -Allocated zp ZP_BYTE:31 [ init_plot_tables::$0 ] -Allocated zp ZP_BYTE:32 [ init_plot_tables::$6 ] -Allocated zp ZP_BYTE:33 [ init_plot_tables::$7 ] -Allocated zp ZP_BYTE:34 [ init_plot_tables::$8 ] -Allocated zp ZP_BYTE:35 [ init_plot_tables::$9 ] -Allocated zp ZP_BYTE:36 [ init_plot_tables::$10 ] +Allocated zp ZP_BYTE:17 [ plot::$7 ] +Allocated zp ZP_WORD:18 [ plot::plotter_x#2 ] +Allocated zp ZP_BYTE:20 [ plot::$8 ] +Allocated zp ZP_WORD:21 [ plot::plotter_y#1 ] +Allocated zp ZP_BYTE:23 [ plot::$9 ] +Allocated zp ZP_WORD:24 [ plot::plotter_y#2 ] +Allocated zp ZP_WORD:26 [ plot::plotter#0 ] +Allocated zp ZP_BYTE:28 [ plot::$5 ] +Allocated zp ZP_BYTE:29 [ init_plot_tables::$0 ] +Allocated zp ZP_BYTE:30 [ init_plot_tables::$6 ] +Allocated zp ZP_BYTE:31 [ init_plot_tables::$7 ] +Allocated zp ZP_BYTE:32 [ init_plot_tables::$8 ] +Allocated zp ZP_BYTE:33 [ init_plot_tables::$9 ] +Allocated zp ZP_BYTE:34 [ init_plot_tables::$10 ] INITIAL ASM //SEG0 File Comments @@ -1078,7 +1058,7 @@ main: { lda #SCREEN/$40|BITMAP/$400 sta D018 //SEG14 [8] call init_screen - //SEG15 [63] phi from main to init_screen [phi:main->init_screen] + //SEG15 [61] phi from main to init_screen [phi:main->init_screen] init_screen_from_main: jsr init_screen //SEG16 [9] phi from main to main::@5 [phi:main->main::@5] @@ -1087,7 +1067,7 @@ main: { //SEG17 main::@5 b5: //SEG18 [10] call init_plot_tables - //SEG19 [37] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables] + //SEG19 [35] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables] init_plot_tables_from_b5: jsr init_plot_tables jmp b2 @@ -1156,20 +1136,18 @@ plots: { //SEG42 plot // plot(byte zeropage($c) x, byte zeropage($d) y) plot: { - .label _1 = $11 - .label _3 = $18 - .label _5 = $1e + .label _5 = $1c .label _6 = $e - .label _7 = $12 - .label _8 = $15 - .label _9 = $19 + .label _7 = $11 + .label _8 = $14 + .label _9 = $17 .label x = $c .label y = $d .label plotter_x = $f - .label plotter_x_2 = $13 - .label plotter_y = $16 - .label plotter_y_2 = $1a - .label plotter = $1c + .label plotter_x_2 = $12 + .label plotter_y = $15 + .label plotter_y_2 = $18 + .label plotter = $1a //SEG43 [23] (byte~) plot::$6 ← *((const byte[256]) plot_xhi#0 + (byte) plot::x#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy x lda plot_xhi,y @@ -1179,41 +1157,34 @@ plot: { sta plotter_x+1 lda #<0 sta plotter_x - //SEG45 [25] (byte~) plot::$1 ← < (byte*) plot::plotter_x#1 -- vbuz1=_lo_pbuz2 - // Needs word arrays arranged as two underlying byte arrays to allow byte* plotter_x = plot_x[x]; - and eventually - byte* plotter = plot_x[x] + plot_y[y]; - lda plotter_x - sta _1 - //SEG46 [26] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG45 [25] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy x lda plot_xlo,y sta _7 - //SEG47 [27] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 -- pbuz1=pbuz2_setlo_vbuz3 + //SEG46 [26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 -- pbuz1=pbuz2_setlo_vbuz3 lda _7 sta plotter_x_2 lda plotter_x+1 sta plotter_x_2+1 - //SEG48 [28] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG47 [27] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy y lda plot_yhi,y sta _8 - //SEG49 [29] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 -- vwuz1=vbuc1_sethi_vbuz2 + //SEG48 [28] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 -- vwuz1=vbuc1_sethi_vbuz2 lda _8 sta plotter_y+1 lda #<0 sta plotter_y - //SEG50 [30] (byte~) plot::$3 ← < (word) plot::plotter_y#1 -- vbuz1=_lo_vwuz2 - lda plotter_y - sta _3 - //SEG51 [31] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG49 [29] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy y lda plot_ylo,y sta _9 - //SEG52 [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 -- vwuz1=vwuz2_setlo_vbuz3 + //SEG50 [30] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 -- vwuz1=vwuz2_setlo_vbuz3 lda _9 sta plotter_y_2 lda plotter_y+1 sta plotter_y_2+1 - //SEG53 [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 -- pbuz1=pbuz2_plus_vwuz3 + //SEG51 [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 -- pbuz1=pbuz2_plus_vwuz3 lda plotter_x_2 clc adc plotter_y_2 @@ -1221,138 +1192,138 @@ plot: { lda plotter_x_2+1 adc plotter_y_2+1 sta plotter+1 - //SEG54 [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) -- vbuz1=_deref_pbuz2_bor_pbuc1_derefidx_vbuz3 + //SEG52 [32] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) -- vbuz1=_deref_pbuz2_bor_pbuc1_derefidx_vbuz3 ldy #0 lda (plotter),y ldy x ora plot_bit,y sta _5 - //SEG55 [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 -- _deref_pbuz1=vbuz2 + //SEG53 [33] *((byte*) plot::plotter#0) ← (byte~) plot::$5 -- _deref_pbuz1=vbuz2 lda _5 ldy #0 sta (plotter),y jmp breturn - //SEG56 plot::@return + //SEG54 plot::@return breturn: - //SEG57 [36] return + //SEG55 [34] return rts } -//SEG58 init_plot_tables +//SEG56 init_plot_tables init_plot_tables: { - .label _0 = $1f - .label _6 = $20 - .label _7 = $21 - .label _8 = $22 - .label _9 = $23 - .label _10 = $24 + .label _0 = $1d + .label _6 = $1e + .label _7 = $1f + .label _8 = $20 + .label _9 = $21 + .label _10 = $22 .label bits = 4 .label x = 3 .label y = 5 .label yoffs = 6 - //SEG59 [38] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] + //SEG57 [36] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] b1_from_init_plot_tables: - //SEG60 [38] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuz1=vbuc1 + //SEG58 [36] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuz1=vbuc1 lda #$80 sta bits - //SEG61 [38] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuz1=vbuc1 + //SEG59 [36] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuz1=vbuc1 lda #0 sta x jmp b1 - //SEG62 [38] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] + //SEG60 [36] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] b1_from_b2: - //SEG63 [38] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy - //SEG64 [38] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy + //SEG61 [36] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy + //SEG62 [36] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy jmp b1 - //SEG65 init_plot_tables::@1 + //SEG63 init_plot_tables::@1 b1: - //SEG66 [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuz1=vbuz2_band_vbuc1 + //SEG64 [37] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuz1=vbuz2_band_vbuc1 lda #$f8 and x sta _0 - //SEG67 [40] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG65 [38] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 -- pbuc1_derefidx_vbuz1=vbuz2 lda _0 ldy x sta plot_xlo,y - //SEG68 [41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG66 [39] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy x lda #>BITMAP sta plot_xhi,y - //SEG69 [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG67 [40] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 lda bits ldy x sta plot_bit,y - //SEG70 [43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG68 [41] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 lsr bits - //SEG71 [44] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 -- vbuz1_neq_0_then_la1 + //SEG69 [42] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 -- vbuz1_neq_0_then_la1 lda bits cmp #0 bne b10_from_b1 - //SEG72 [45] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] + //SEG70 [43] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] b2_from_b1: - //SEG73 [45] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuz1=vbuc1 + //SEG71 [43] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuz1=vbuc1 lda #$80 sta bits jmp b2 - //SEG74 init_plot_tables::@2 + //SEG72 init_plot_tables::@2 b2: - //SEG75 [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 -- vbuz1=_inc_vbuz1 + //SEG73 [44] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG76 [47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 -- vbuz1_neq_0_then_la1 + //SEG74 [45] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 -- vbuz1_neq_0_then_la1 lda x cmp #0 bne b1_from_b2 - //SEG77 [48] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] + //SEG75 [46] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] b3_from_b2: - //SEG78 [48] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 + //SEG76 [46] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 lda #<0 sta yoffs lda #>0 sta yoffs+1 - //SEG79 [48] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuz1=vbuc1 + //SEG77 [46] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuz1=vbuc1 lda #0 sta y jmp b3 - //SEG80 [48] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] + //SEG78 [46] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] b3_from_b4: - //SEG81 [48] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy - //SEG82 [48] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy + //SEG79 [46] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy + //SEG80 [46] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy jmp b3 - //SEG83 init_plot_tables::@3 + //SEG81 init_plot_tables::@3 b3: - //SEG84 [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG82 [47] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and y sta _6 - //SEG85 [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 -- vbuz1=_lo_pbuz2 + //SEG83 [48] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 -- vbuz1=_lo_pbuz2 lda yoffs sta _7 - //SEG86 [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 -- vbuz1=vbuz2_bor_vbuz3 + //SEG84 [49] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 -- vbuz1=vbuz2_bor_vbuz3 lda _6 ora _7 sta _8 - //SEG87 [52] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG85 [50] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 -- pbuc1_derefidx_vbuz1=vbuz2 lda _8 ldy y sta plot_ylo,y - //SEG88 [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 -- vbuz1=_hi_pbuz2 + //SEG86 [51] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 -- vbuz1=_hi_pbuz2 lda yoffs+1 sta _9 - //SEG89 [54] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG87 [52] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 -- pbuc1_derefidx_vbuz1=vbuz2 lda _9 ldy y sta plot_yhi,y - //SEG90 [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG88 [53] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and y sta _10 - //SEG91 [56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG89 [54] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 -- vbuz1_neq_vbuc1_then_la1 lda _10 cmp #7 bne b4_from_b3 jmp b7 - //SEG92 init_plot_tables::@7 + //SEG90 init_plot_tables::@7 b7: - //SEG93 [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG91 [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -1360,92 +1331,92 @@ init_plot_tables: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG94 [58] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] + //SEG92 [56] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] b4_from_b3: b4_from_b7: - //SEG95 [58] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy + //SEG93 [56] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy jmp b4 - //SEG96 init_plot_tables::@4 + //SEG94 init_plot_tables::@4 b4: - //SEG97 [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 -- vbuz1=_inc_vbuz1 + //SEG95 [57] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG98 [60] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 -- vbuz1_neq_0_then_la1 + //SEG96 [58] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 -- vbuz1_neq_0_then_la1 lda y cmp #0 bne b3_from_b4 jmp breturn - //SEG99 init_plot_tables::@return + //SEG97 init_plot_tables::@return breturn: - //SEG100 [61] return + //SEG98 [59] return rts - //SEG101 [62] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] + //SEG99 [60] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] b10_from_b1: jmp b10 - //SEG102 init_plot_tables::@10 + //SEG100 init_plot_tables::@10 b10: - //SEG103 [45] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] + //SEG101 [43] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] b2_from_b10: - //SEG104 [45] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy + //SEG102 [43] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy jmp b2 } -//SEG105 init_screen +//SEG103 init_screen init_screen: { .label b = 8 .label c = $a - //SEG106 [64] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG104 [62] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] b1_from_init_screen: - //SEG107 [64] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 + //SEG105 [62] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #BITMAP sta b+1 jmp b1 - //SEG108 [64] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG106 [62] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] b1_from_b1: - //SEG109 [64] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG107 [62] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy jmp b1 - //SEG110 init_screen::@1 + //SEG108 init_screen::@1 b1: - //SEG111 [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG109 [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (b),y - //SEG112 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 -- pbuz1=_inc_pbuz1 + //SEG110 [64] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 -- pbuz1=_inc_pbuz1 inc b bne !+ inc b+1 !: - //SEG113 [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG111 [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 -- pbuz1_neq_pbuc1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1_from_b1 lda b cmp #init_screen::@2] + //SEG112 [66] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] b2_from_b1: - //SEG115 [68] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 + //SEG113 [66] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta c+1 jmp b2 - //SEG116 [68] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] + //SEG114 [66] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] b2_from_b2: - //SEG117 [68] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy + //SEG115 [66] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy jmp b2 - //SEG118 init_screen::@2 + //SEG116 init_screen::@2 b2: - //SEG119 [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 -- _deref_pbuz1=vbuc1 + //SEG117 [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 -- _deref_pbuz1=vbuc1 lda #$14 ldy #0 sta (c),y - //SEG120 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 + //SEG118 [68] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 inc c bne !+ inc c+1 !: - //SEG121 [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 -- pbuz1_neq_pbuc1_then_la1 + //SEG119 [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 -- pbuz1_neq_pbuc1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2_from_b2 @@ -1453,9 +1424,9 @@ init_screen: { cmp #(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a -Statement [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a -Statement [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a +Statement [39] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a +Statement [40] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a +Statement [47] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ] -Statement [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a -Statement [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a -Statement [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y -Statement [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) always clobbers reg byte a -Statement [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y -Statement [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) always clobbers reg byte a +Statement [53] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a +Statement [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a +Statement [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y +Statement [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) always clobbers reg byte a +Statement [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y +Statement [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) always clobbers reg byte a Statement [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [5] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [6] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [7] *((const byte*) D018#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0/(word/signed word/dword/signed dword) 1024 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [27] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) always clobbers reg byte a -Statement [30] (byte~) plot::$3 ← < (word) plot::plotter_y#1 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:2::plots:13::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) always clobbers reg byte a -Statement [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) always clobbers reg byte a -Statement [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:2::plots:13::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) always clobbers reg byte a -Statement [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:19 [ plots::i#2 plot::plotter#0 plot::$5 ] ) always clobbers reg byte a reg byte y -Statement [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( main:2::plots:13::plot:19 [ plots::i#2 ] ) always clobbers reg byte y -Statement [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) always clobbers reg byte a -Statement [41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a -Statement [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a -Statement [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a -Statement [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a -Statement [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a -Statement [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y -Statement [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) always clobbers reg byte a -Statement [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y -Statement [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) always clobbers reg byte a +Statement [26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) always clobbers reg byte a +Statement [30] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) always clobbers reg byte a +Statement [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:2::plots:13::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) always clobbers reg byte a +Statement [32] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:19 [ plots::i#2 plot::plotter#0 plot::$5 ] ) always clobbers reg byte a reg byte y +Statement [33] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( main:2::plots:13::plot:19 [ plots::i#2 ] ) always clobbers reg byte y +Statement [37] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) always clobbers reg byte a +Statement [39] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a +Statement [40] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a +Statement [47] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a +Statement [53] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a +Statement [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a +Statement [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y +Statement [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) always clobbers reg byte a +Statement [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y +Statement [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_BYTE:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , @@ -1528,74 +1497,68 @@ Potential registers zp ZP_BYTE:12 [ plot::x#0 ] : zp ZP_BYTE:12 , reg byte x , r Potential registers zp ZP_BYTE:13 [ plot::y#0 ] : zp ZP_BYTE:13 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:14 [ plot::$6 ] : zp ZP_BYTE:14 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:15 [ plot::plotter_x#1 ] : zp ZP_WORD:15 , -Potential registers zp ZP_BYTE:17 [ plot::$1 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:18 [ plot::$7 ] : zp ZP_BYTE:18 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:19 [ plot::plotter_x#2 ] : zp ZP_WORD:19 , -Potential registers zp ZP_BYTE:21 [ plot::$8 ] : zp ZP_BYTE:21 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:22 [ plot::plotter_y#1 ] : zp ZP_WORD:22 , -Potential registers zp ZP_BYTE:24 [ plot::$3 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:25 [ plot::$9 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:26 [ plot::plotter_y#2 ] : zp ZP_WORD:26 , -Potential registers zp ZP_WORD:28 [ plot::plotter#0 ] : zp ZP_WORD:28 , -Potential registers zp ZP_BYTE:30 [ plot::$5 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:31 [ init_plot_tables::$0 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:32 [ init_plot_tables::$6 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:33 [ init_plot_tables::$7 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_BYTE:34 [ init_plot_tables::$8 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:35 [ init_plot_tables::$9 ] : zp ZP_BYTE:35 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:36 [ init_plot_tables::$10 ] : zp ZP_BYTE:36 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:17 [ plot::$7 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:18 [ plot::plotter_x#2 ] : zp ZP_WORD:18 , +Potential registers zp ZP_BYTE:20 [ plot::$8 ] : zp ZP_BYTE:20 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:21 [ plot::plotter_y#1 ] : zp ZP_WORD:21 , +Potential registers zp ZP_BYTE:23 [ plot::$9 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:24 [ plot::plotter_y#2 ] : zp ZP_WORD:24 , +Potential registers zp ZP_WORD:26 [ plot::plotter#0 ] : zp ZP_WORD:26 , +Potential registers zp ZP_BYTE:28 [ plot::$5 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:29 [ init_plot_tables::$0 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:30 [ init_plot_tables::$6 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:31 [ init_plot_tables::$7 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , reg byte alu , +Potential registers zp ZP_BYTE:32 [ init_plot_tables::$8 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:33 [ init_plot_tables::$9 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:34 [ init_plot_tables::$10 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES Uplift Scope [plots] 252.5: zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] -Uplift Scope [init_plot_tables] 39.11: zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] 24.93: zp ZP_BYTE:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] 23.83: zp ZP_BYTE:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ] 22.5: zp ZP_BYTE:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ] 22: zp ZP_BYTE:31 [ init_plot_tables::$0 ] 22: zp ZP_BYTE:33 [ init_plot_tables::$7 ] 22: zp ZP_BYTE:34 [ init_plot_tables::$8 ] 22: zp ZP_BYTE:35 [ init_plot_tables::$9 ] 22: zp ZP_BYTE:36 [ init_plot_tables::$10 ] 11: zp ZP_BYTE:32 [ init_plot_tables::$6 ] -Uplift Scope [plot] 20: zp ZP_BYTE:17 [ plot::$1 ] 20: zp ZP_BYTE:24 [ plot::$3 ] 11.67: zp ZP_BYTE:13 [ plot::y#0 ] 8.23: zp ZP_BYTE:12 [ plot::x#0 ] 4: zp ZP_BYTE:14 [ plot::$6 ] 4: zp ZP_BYTE:18 [ plot::$7 ] 4: zp ZP_BYTE:21 [ plot::$8 ] 4: zp ZP_BYTE:25 [ plot::$9 ] 4: zp ZP_WORD:26 [ plot::plotter_y#2 ] 4: zp ZP_BYTE:30 [ plot::$5 ] 3: zp ZP_WORD:28 [ plot::plotter#0 ] 2: zp ZP_WORD:15 [ plot::plotter_x#1 ] 2: zp ZP_WORD:22 [ plot::plotter_y#1 ] 0.67: zp ZP_WORD:19 [ plot::plotter_x#2 ] +Uplift Scope [init_plot_tables] 39.11: zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] 24.93: zp ZP_BYTE:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] 23.83: zp ZP_BYTE:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ] 22.5: zp ZP_BYTE:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ] 22: zp ZP_BYTE:29 [ init_plot_tables::$0 ] 22: zp ZP_BYTE:31 [ init_plot_tables::$7 ] 22: zp ZP_BYTE:32 [ init_plot_tables::$8 ] 22: zp ZP_BYTE:33 [ init_plot_tables::$9 ] 22: zp ZP_BYTE:34 [ init_plot_tables::$10 ] 11: zp ZP_BYTE:30 [ init_plot_tables::$6 ] Uplift Scope [init_screen] 33: zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ] 33: zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ] +Uplift Scope [plot] 15: zp ZP_BYTE:13 [ plot::y#0 ] 9.73: zp ZP_BYTE:12 [ plot::x#0 ] 4: zp ZP_BYTE:14 [ plot::$6 ] 4: zp ZP_BYTE:17 [ plot::$7 ] 4: zp ZP_BYTE:20 [ plot::$8 ] 4: zp ZP_BYTE:23 [ plot::$9 ] 4: zp ZP_WORD:24 [ plot::plotter_y#2 ] 4: zp ZP_BYTE:28 [ plot::$5 ] 3: zp ZP_WORD:26 [ plot::plotter#0 ] 2: zp ZP_WORD:15 [ plot::plotter_x#1 ] 2: zp ZP_WORD:21 [ plot::plotter_y#1 ] 0.8: zp ZP_WORD:18 [ plot::plotter_x#2 ] Uplift Scope [main] Uplift Scope [] -Uplifting [plots] best 9007 combination reg byte x [ plots::i#2 plots::i#1 ] -Uplifting [init_plot_tables] best 8497 combination zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ] reg byte a [ init_plot_tables::$0 ] zp ZP_BYTE:33 [ init_plot_tables::$7 ] zp ZP_BYTE:34 [ init_plot_tables::$8 ] zp ZP_BYTE:35 [ init_plot_tables::$9 ] zp ZP_BYTE:36 [ init_plot_tables::$10 ] zp ZP_BYTE:32 [ init_plot_tables::$6 ] +Uplifting [plots] best 8995 combination reg byte x [ plots::i#2 plots::i#1 ] +Uplifting [init_plot_tables] best 8485 combination zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ] reg byte a [ init_plot_tables::$0 ] zp ZP_BYTE:31 [ init_plot_tables::$7 ] zp ZP_BYTE:32 [ init_plot_tables::$8 ] zp ZP_BYTE:33 [ init_plot_tables::$9 ] zp ZP_BYTE:34 [ init_plot_tables::$10 ] zp ZP_BYTE:30 [ init_plot_tables::$6 ] Limited combination testing to 100 combinations of 138240 possible. -Uplifting [plot] best 8491 combination reg byte a [ plot::$1 ] reg byte a [ plot::$3 ] zp ZP_BYTE:13 [ plot::y#0 ] zp ZP_BYTE:12 [ plot::x#0 ] zp ZP_BYTE:14 [ plot::$6 ] zp ZP_BYTE:18 [ plot::$7 ] zp ZP_BYTE:21 [ plot::$8 ] zp ZP_BYTE:25 [ plot::$9 ] zp ZP_WORD:26 [ plot::plotter_y#2 ] zp ZP_BYTE:30 [ plot::$5 ] zp ZP_WORD:28 [ plot::plotter#0 ] zp ZP_WORD:15 [ plot::plotter_x#1 ] zp ZP_WORD:22 [ plot::plotter_y#1 ] zp ZP_WORD:19 [ plot::plotter_x#2 ] -Limited combination testing to 100 combinations of 147456 possible. -Uplifting [init_screen] best 8491 combination zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ] zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ] -Uplifting [main] best 8491 combination -Uplifting [] best 8491 combination -Attempting to uplift remaining variables inzp ZP_BYTE:33 [ init_plot_tables::$7 ] -Uplifting [init_plot_tables] best 8431 combination reg byte a [ init_plot_tables::$7 ] -Attempting to uplift remaining variables inzp ZP_BYTE:34 [ init_plot_tables::$8 ] -Uplifting [init_plot_tables] best 8371 combination reg byte a [ init_plot_tables::$8 ] -Attempting to uplift remaining variables inzp ZP_BYTE:35 [ init_plot_tables::$9 ] -Uplifting [init_plot_tables] best 8311 combination reg byte a [ init_plot_tables::$9 ] -Attempting to uplift remaining variables inzp ZP_BYTE:36 [ init_plot_tables::$10 ] -Uplifting [init_plot_tables] best 8251 combination reg byte a [ init_plot_tables::$10 ] +Uplifting [init_screen] best 8485 combination zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ] zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ] +Uplifting [plot] best 8473 combination zp ZP_BYTE:13 [ plot::y#0 ] zp ZP_BYTE:12 [ plot::x#0 ] reg byte a [ plot::$6 ] reg byte a [ plot::$7 ] zp ZP_BYTE:20 [ plot::$8 ] zp ZP_BYTE:23 [ plot::$9 ] zp ZP_WORD:24 [ plot::plotter_y#2 ] zp ZP_BYTE:28 [ plot::$5 ] zp ZP_WORD:26 [ plot::plotter#0 ] zp ZP_WORD:15 [ plot::plotter_x#1 ] zp ZP_WORD:21 [ plot::plotter_y#1 ] zp ZP_WORD:18 [ plot::plotter_x#2 ] +Limited combination testing to 100 combinations of 9216 possible. +Uplifting [main] best 8473 combination +Uplifting [] best 8473 combination +Attempting to uplift remaining variables inzp ZP_BYTE:31 [ init_plot_tables::$7 ] +Uplifting [init_plot_tables] best 8413 combination reg byte a [ init_plot_tables::$7 ] +Attempting to uplift remaining variables inzp ZP_BYTE:32 [ init_plot_tables::$8 ] +Uplifting [init_plot_tables] best 8353 combination reg byte a [ init_plot_tables::$8 ] +Attempting to uplift remaining variables inzp ZP_BYTE:33 [ init_plot_tables::$9 ] +Uplifting [init_plot_tables] best 8293 combination reg byte a [ init_plot_tables::$9 ] +Attempting to uplift remaining variables inzp ZP_BYTE:34 [ init_plot_tables::$10 ] +Uplifting [init_plot_tables] best 8233 combination reg byte a [ init_plot_tables::$10 ] Attempting to uplift remaining variables inzp ZP_BYTE:13 [ plot::y#0 ] -Uplifting [plot] best 8251 combination zp ZP_BYTE:13 [ plot::y#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:32 [ init_plot_tables::$6 ] -Uplifting [init_plot_tables] best 8251 combination zp ZP_BYTE:32 [ init_plot_tables::$6 ] +Uplifting [plot] best 8233 combination zp ZP_BYTE:13 [ plot::y#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:30 [ init_plot_tables::$6 ] +Uplifting [init_plot_tables] best 8233 combination zp ZP_BYTE:30 [ init_plot_tables::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:12 [ plot::x#0 ] -Uplifting [plot] best 8251 combination zp ZP_BYTE:12 [ plot::x#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:14 [ plot::$6 ] -Uplifting [plot] best 8245 combination reg byte a [ plot::$6 ] -Attempting to uplift remaining variables inzp ZP_BYTE:18 [ plot::$7 ] -Uplifting [plot] best 8239 combination reg byte a [ plot::$7 ] -Attempting to uplift remaining variables inzp ZP_BYTE:21 [ plot::$8 ] -Uplifting [plot] best 8233 combination reg byte a [ plot::$8 ] -Attempting to uplift remaining variables inzp ZP_BYTE:25 [ plot::$9 ] -Uplifting [plot] best 8227 combination reg byte a [ plot::$9 ] -Attempting to uplift remaining variables inzp ZP_BYTE:30 [ plot::$5 ] -Uplifting [plot] best 8221 combination reg byte a [ plot::$5 ] -Coalescing zero page register with common assignment [ zp ZP_WORD:15 [ plot::plotter_x#1 ] ] with [ zp ZP_WORD:19 [ plot::plotter_x#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ plot::plotter_y#1 ] ] with [ zp ZP_WORD:26 [ plot::plotter_y#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:15 [ plot::plotter_x#1 plot::plotter_x#2 ] ] with [ zp ZP_WORD:28 [ plot::plotter#0 ] ] - score: 1 +Uplifting [plot] best 8233 combination zp ZP_BYTE:12 [ plot::x#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:20 [ plot::$8 ] +Uplifting [plot] best 8227 combination reg byte a [ plot::$8 ] +Attempting to uplift remaining variables inzp ZP_BYTE:23 [ plot::$9 ] +Uplifting [plot] best 8221 combination reg byte a [ plot::$9 ] +Attempting to uplift remaining variables inzp ZP_BYTE:28 [ plot::$5 ] +Uplifting [plot] best 8215 combination reg byte a [ plot::$5 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:15 [ plot::plotter_x#1 ] ] with [ zp ZP_WORD:18 [ plot::plotter_x#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ plot::plotter_y#1 ] ] with [ zp ZP_WORD:24 [ plot::plotter_y#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:15 [ plot::plotter_x#1 plot::plotter_x#2 ] ] with [ zp ZP_WORD:26 [ plot::plotter#0 ] ] - score: 1 Coalescing zero page register [ zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] ] with [ zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ] ] Coalescing zero page register [ zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 ] ] with [ zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ] ] Coalescing zero page register [ zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 ] ] with [ zp ZP_WORD:15 [ plot::plotter_x#1 plot::plotter_x#2 plot::plotter#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:12 [ plot::x#0 ] ] with [ zp ZP_BYTE:32 [ init_plot_tables::$6 ] ] +Coalescing zero page register [ zp ZP_BYTE:12 [ plot::x#0 ] ] with [ zp ZP_BYTE:30 [ init_plot_tables::$6 ] ] Allocated (was zp ZP_WORD:6) zp ZP_WORD:2 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 plot::plotter_x#1 plot::plotter_x#2 plot::plotter#0 ] Allocated (was zp ZP_BYTE:12) zp ZP_BYTE:4 [ plot::x#0 init_plot_tables::$6 ] Allocated (was zp ZP_BYTE:13) zp ZP_BYTE:5 [ plot::y#0 ] -Allocated (was zp ZP_WORD:22) zp ZP_WORD:6 [ plot::plotter_y#1 plot::plotter_y#2 ] +Allocated (was zp ZP_WORD:21) zp ZP_WORD:6 [ plot::plotter_y#1 plot::plotter_y#2 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -1644,7 +1607,7 @@ main: { lda #SCREEN/$40|BITMAP/$400 sta D018 //SEG14 [8] call init_screen - //SEG15 [63] phi from main to init_screen [phi:main->init_screen] + //SEG15 [61] phi from main to init_screen [phi:main->init_screen] init_screen_from_main: jsr init_screen //SEG16 [9] phi from main to main::@5 [phi:main->main::@5] @@ -1653,7 +1616,7 @@ main: { //SEG17 main::@5 b5: //SEG18 [10] call init_plot_tables - //SEG19 [37] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables] + //SEG19 [35] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables] init_plot_tables_from_b5: jsr init_plot_tables jmp b2 @@ -1729,29 +1692,24 @@ plot: { sta plotter_x+1 lda #<0 sta plotter_x - //SEG45 [25] (byte~) plot::$1 ← < (byte*) plot::plotter_x#1 -- vbuaa=_lo_pbuz1 - // Needs word arrays arranged as two underlying byte arrays to allow byte* plotter_x = plot_x[x]; - and eventually - byte* plotter = plot_x[x] + plot_y[y]; - lda plotter_x - //SEG46 [26] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG45 [25] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) -- vbuaa=pbuc1_derefidx_vbuz1 ldy x lda plot_xlo,y - //SEG47 [27] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 -- pbuz1=pbuz1_setlo_vbuaa + //SEG46 [26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 -- pbuz1=pbuz1_setlo_vbuaa sta plotter_x - //SEG48 [28] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG47 [27] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1 ldy y lda plot_yhi,y - //SEG49 [29] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 -- vwuz1=vbuc1_sethi_vbuaa + //SEG48 [28] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 -- vwuz1=vbuc1_sethi_vbuaa sta plotter_y+1 lda #<0 sta plotter_y - //SEG50 [30] (byte~) plot::$3 ← < (word) plot::plotter_y#1 -- vbuaa=_lo_vwuz1 - lda plotter_y - //SEG51 [31] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG49 [29] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1 ldy y lda plot_ylo,y - //SEG52 [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 -- vwuz1=vwuz1_setlo_vbuaa + //SEG50 [30] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 -- vwuz1=vwuz1_setlo_vbuaa sta plotter_y - //SEG53 [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 -- pbuz1=pbuz1_plus_vwuz2 + //SEG51 [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 -- pbuz1=pbuz1_plus_vwuz2 lda plotter clc adc plotter_y @@ -1759,109 +1717,109 @@ plot: { lda plotter+1 adc plotter_y+1 sta plotter+1 - //SEG54 [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 + //SEG52 [32] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 ldy #0 lda (plotter),y ldy x ora plot_bit,y - //SEG55 [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 -- _deref_pbuz1=vbuaa + //SEG53 [33] *((byte*) plot::plotter#0) ← (byte~) plot::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (plotter),y jmp breturn - //SEG56 plot::@return + //SEG54 plot::@return breturn: - //SEG57 [36] return + //SEG55 [34] return rts } -//SEG58 init_plot_tables +//SEG56 init_plot_tables init_plot_tables: { .label _6 = 4 .label yoffs = 2 - //SEG59 [38] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] + //SEG57 [36] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] b1_from_init_plot_tables: - //SEG60 [38] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1 + //SEG58 [36] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1 ldy #$80 - //SEG61 [38] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuxx=vbuc1 + //SEG59 [36] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG62 [38] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] + //SEG60 [36] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] b1_from_b2: - //SEG63 [38] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy - //SEG64 [38] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy + //SEG61 [36] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy + //SEG62 [36] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy jmp b1 - //SEG65 init_plot_tables::@1 + //SEG63 init_plot_tables::@1 b1: - //SEG66 [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuaa=vbuxx_band_vbuc1 + //SEG64 [37] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuaa=vbuxx_band_vbuc1 txa and #$f8 - //SEG67 [40] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG65 [38] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 -- pbuc1_derefidx_vbuxx=vbuaa sta plot_xlo,x - //SEG68 [41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG66 [39] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #>BITMAP sta plot_xhi,x - //SEG69 [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy + //SEG67 [40] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy tya sta plot_bit,x - //SEG70 [43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_ror_1 + //SEG68 [41] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_ror_1 tya lsr tay - //SEG71 [44] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 -- vbuyy_neq_0_then_la1 + //SEG69 [42] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 -- vbuyy_neq_0_then_la1 cpy #0 bne b10_from_b1 - //SEG72 [45] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] + //SEG70 [43] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] b2_from_b1: - //SEG73 [45] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuyy=vbuc1 + //SEG71 [43] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuyy=vbuc1 ldy #$80 jmp b2 - //SEG74 init_plot_tables::@2 + //SEG72 init_plot_tables::@2 b2: - //SEG75 [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 -- vbuxx=_inc_vbuxx + //SEG73 [44] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 -- vbuxx=_inc_vbuxx inx - //SEG76 [47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 -- vbuxx_neq_0_then_la1 + //SEG74 [45] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1_from_b2 - //SEG77 [48] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] + //SEG75 [46] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] b3_from_b2: - //SEG78 [48] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 + //SEG76 [46] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 lda #<0 sta yoffs lda #>0 sta yoffs+1 - //SEG79 [48] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuxx=vbuc1 + //SEG77 [46] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG80 [48] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] + //SEG78 [46] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] b3_from_b4: - //SEG81 [48] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy - //SEG82 [48] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy + //SEG79 [46] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy + //SEG80 [46] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy jmp b3 - //SEG83 init_plot_tables::@3 + //SEG81 init_plot_tables::@3 b3: - //SEG84 [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG82 [47] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 txa and #7 sta _6 - //SEG85 [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG83 [48] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG86 [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 -- vbuaa=vbuz1_bor_vbuaa + //SEG84 [49] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 -- vbuaa=vbuz1_bor_vbuaa ora _6 - //SEG87 [52] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG85 [50] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 -- pbuc1_derefidx_vbuxx=vbuaa sta plot_ylo,x - //SEG88 [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG86 [51] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG89 [54] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG87 [52] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 -- pbuc1_derefidx_vbuxx=vbuaa sta plot_yhi,x - //SEG90 [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG88 [53] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG91 [56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG89 [54] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #7 bne b4_from_b3 jmp b7 - //SEG92 init_plot_tables::@7 + //SEG90 init_plot_tables::@7 b7: - //SEG93 [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG91 [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -1869,91 +1827,91 @@ init_plot_tables: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG94 [58] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] + //SEG92 [56] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] b4_from_b3: b4_from_b7: - //SEG95 [58] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy + //SEG93 [56] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy jmp b4 - //SEG96 init_plot_tables::@4 + //SEG94 init_plot_tables::@4 b4: - //SEG97 [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 -- vbuxx=_inc_vbuxx + //SEG95 [57] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 -- vbuxx=_inc_vbuxx inx - //SEG98 [60] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 -- vbuxx_neq_0_then_la1 + //SEG96 [58] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne b3_from_b4 jmp breturn - //SEG99 init_plot_tables::@return + //SEG97 init_plot_tables::@return breturn: - //SEG100 [61] return + //SEG98 [59] return rts - //SEG101 [62] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] + //SEG99 [60] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] b10_from_b1: jmp b10 - //SEG102 init_plot_tables::@10 + //SEG100 init_plot_tables::@10 b10: - //SEG103 [45] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] + //SEG101 [43] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] b2_from_b10: - //SEG104 [45] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy + //SEG102 [43] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy jmp b2 } -//SEG105 init_screen +//SEG103 init_screen init_screen: { .label b = 2 .label c = 2 - //SEG106 [64] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG104 [62] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] b1_from_init_screen: - //SEG107 [64] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 + //SEG105 [62] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #BITMAP sta b+1 jmp b1 - //SEG108 [64] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG106 [62] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] b1_from_b1: - //SEG109 [64] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG107 [62] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy jmp b1 - //SEG110 init_screen::@1 + //SEG108 init_screen::@1 b1: - //SEG111 [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG109 [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (b),y - //SEG112 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 -- pbuz1=_inc_pbuz1 + //SEG110 [64] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 -- pbuz1=_inc_pbuz1 inc b bne !+ inc b+1 !: - //SEG113 [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG111 [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 -- pbuz1_neq_pbuc1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1_from_b1 lda b cmp #init_screen::@2] + //SEG112 [66] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] b2_from_b1: - //SEG115 [68] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 + //SEG113 [66] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta c+1 jmp b2 - //SEG116 [68] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] + //SEG114 [66] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] b2_from_b2: - //SEG117 [68] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy + //SEG115 [66] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy jmp b2 - //SEG118 init_screen::@2 + //SEG116 init_screen::@2 b2: - //SEG119 [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 -- _deref_pbuz1=vbuc1 + //SEG117 [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 -- _deref_pbuz1=vbuc1 lda #$14 ldy #0 sta (c),y - //SEG120 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 + //SEG118 [68] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 inc c bne !+ inc c+1 !: - //SEG121 [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 -- pbuz1_neq_pbuc1_then_la1 + //SEG119 [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 -- pbuz1_neq_pbuc1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2_from_b2 @@ -1961,9 +1919,9 @@ init_screen: { cmp #0 Replacing instruction ldx #0 with TAX @@ -2139,8 +2095,6 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@7 (void()) plot((byte) plot::x , (byte) plot::y) -(byte~) plot::$1 reg byte a 20.0 -(byte~) plot::$3 reg byte a 20.0 (byte~) plot::$5 reg byte a 4.0 (byte~) plot::$6 reg byte a 4.0 (byte~) plot::$7 reg byte a 4.0 @@ -2151,14 +2105,14 @@ FINAL SYMBOL TABLE (byte*) plot::plotter#0 plotter zp ZP_WORD:2 3.0 (byte*) plot::plotter_x (byte*) plot::plotter_x#1 plotter_x zp ZP_WORD:2 2.0 -(byte*) plot::plotter_x#2 plotter_x zp ZP_WORD:2 0.6666666666666666 +(byte*) plot::plotter_x#2 plotter_x zp ZP_WORD:2 0.8 (word) plot::plotter_y (word) plot::plotter_y#1 plotter_y zp ZP_WORD:6 2.0 (word) plot::plotter_y#2 plotter_y zp ZP_WORD:6 4.0 (byte) plot::x -(byte) plot::x#0 x zp ZP_BYTE:4 8.23076923076923 +(byte) plot::x#0 x zp ZP_BYTE:4 9.727272727272727 (byte) plot::y -(byte) plot::y#0 y zp ZP_BYTE:5 11.666666666666664 +(byte) plot::y#0 y zp ZP_BYTE:5 15.000000000000002 (byte[256]) plot_bit (const byte[256]) plot_bit#0 plot_bit = { fill( 256, 0) } (byte[256]) plot_xhi @@ -2191,11 +2145,9 @@ zp ZP_WORD:2 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tab zp ZP_BYTE:4 [ plot::x#0 init_plot_tables::$6 ] zp ZP_BYTE:5 [ plot::y#0 ] reg byte a [ plot::$6 ] -reg byte a [ plot::$1 ] reg byte a [ plot::$7 ] reg byte a [ plot::$8 ] zp ZP_WORD:6 [ plot::plotter_y#1 plot::plotter_y#2 ] -reg byte a [ plot::$3 ] reg byte a [ plot::$9 ] reg byte a [ plot::$5 ] reg byte a [ init_plot_tables::$0 ] @@ -2245,12 +2197,12 @@ main: { lda #SCREEN/$40|BITMAP/$400 sta D018 //SEG14 [8] call init_screen - //SEG15 [63] phi from main to init_screen [phi:main->init_screen] + //SEG15 [61] phi from main to init_screen [phi:main->init_screen] jsr init_screen //SEG16 [9] phi from main to main::@5 [phi:main->main::@5] //SEG17 main::@5 //SEG18 [10] call init_plot_tables - //SEG19 [37] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables] + //SEG19 [35] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables] jsr init_plot_tables //SEG20 main::@2 b2: @@ -2311,25 +2263,22 @@ plot: { sta plotter_x+1 lda #<0 sta plotter_x - //SEG45 [25] (byte~) plot::$1 ← < (byte*) plot::plotter_x#1 -- vbuaa=_lo_pbuz1 - // Needs word arrays arranged as two underlying byte arrays to allow byte* plotter_x = plot_x[x]; - and eventually - byte* plotter = plot_x[x] + plot_y[y]; - //SEG46 [26] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG45 [25] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) -- vbuaa=pbuc1_derefidx_vbuz1 lda plot_xlo,y - //SEG47 [27] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 -- pbuz1=pbuz1_setlo_vbuaa + //SEG46 [26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 -- pbuz1=pbuz1_setlo_vbuaa sta plotter_x - //SEG48 [28] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG47 [27] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1 ldy y lda plot_yhi,y - //SEG49 [29] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 -- vwuz1=vbuc1_sethi_vbuaa + //SEG48 [28] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 -- vwuz1=vbuc1_sethi_vbuaa sta plotter_y+1 lda #<0 sta plotter_y - //SEG50 [30] (byte~) plot::$3 ← < (word) plot::plotter_y#1 -- vbuaa=_lo_vwuz1 - //SEG51 [31] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG49 [29] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1 lda plot_ylo,y - //SEG52 [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 -- vwuz1=vwuz1_setlo_vbuaa + //SEG50 [30] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 -- vwuz1=vwuz1_setlo_vbuaa sta plotter_y - //SEG53 [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 -- pbuz1=pbuz1_plus_vwuz2 + //SEG51 [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 -- pbuz1=pbuz1_plus_vwuz2 lda plotter clc adc plotter_y @@ -2337,94 +2286,94 @@ plot: { lda plotter+1 adc plotter_y+1 sta plotter+1 - //SEG54 [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 + //SEG52 [32] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 ldy #0 lda (plotter),y ldy x ora plot_bit,y - //SEG55 [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 -- _deref_pbuz1=vbuaa + //SEG53 [33] *((byte*) plot::plotter#0) ← (byte~) plot::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (plotter),y - //SEG56 plot::@return - //SEG57 [36] return + //SEG54 plot::@return + //SEG55 [34] return rts } -//SEG58 init_plot_tables +//SEG56 init_plot_tables init_plot_tables: { .label _6 = 4 .label yoffs = 2 - //SEG59 [38] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] - //SEG60 [38] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1 + //SEG57 [36] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] + //SEG58 [36] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1 ldy #$80 - //SEG61 [38] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuxx=vbuc1 + //SEG59 [36] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG62 [38] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] - //SEG63 [38] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy - //SEG64 [38] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy - //SEG65 init_plot_tables::@1 + //SEG60 [36] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] + //SEG61 [36] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy + //SEG62 [36] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy + //SEG63 init_plot_tables::@1 b1: - //SEG66 [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuaa=vbuxx_band_vbuc1 + //SEG64 [37] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuaa=vbuxx_band_vbuc1 txa and #$f8 - //SEG67 [40] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG65 [38] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 -- pbuc1_derefidx_vbuxx=vbuaa sta plot_xlo,x - //SEG68 [41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG66 [39] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #>BITMAP sta plot_xhi,x - //SEG69 [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy + //SEG67 [40] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy tya sta plot_bit,x - //SEG70 [43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_ror_1 + //SEG68 [41] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_ror_1 tya lsr tay - //SEG71 [44] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 -- vbuyy_neq_0_then_la1 + //SEG69 [42] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 -- vbuyy_neq_0_then_la1 cpy #0 bne b2 - //SEG72 [45] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] - //SEG73 [45] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuyy=vbuc1 + //SEG70 [43] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] + //SEG71 [43] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuyy=vbuc1 ldy #$80 - //SEG74 init_plot_tables::@2 + //SEG72 init_plot_tables::@2 b2: - //SEG75 [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 -- vbuxx=_inc_vbuxx + //SEG73 [44] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 -- vbuxx=_inc_vbuxx inx - //SEG76 [47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 -- vbuxx_neq_0_then_la1 + //SEG74 [45] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1 - //SEG77 [48] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] - //SEG78 [48] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 + //SEG75 [46] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] + //SEG76 [46] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 lda #<0 sta yoffs sta yoffs+1 - //SEG79 [48] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuxx=vbuc1 + //SEG77 [46] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuxx=vbuc1 tax - //SEG80 [48] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] - //SEG81 [48] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy - //SEG82 [48] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy - //SEG83 init_plot_tables::@3 + //SEG78 [46] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] + //SEG79 [46] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy + //SEG80 [46] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy + //SEG81 init_plot_tables::@3 b3: - //SEG84 [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG82 [47] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 txa and #7 sta _6 - //SEG85 [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG83 [48] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG86 [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 -- vbuaa=vbuz1_bor_vbuaa + //SEG84 [49] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 -- vbuaa=vbuz1_bor_vbuaa ora _6 - //SEG87 [52] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG85 [50] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 -- pbuc1_derefidx_vbuxx=vbuaa sta plot_ylo,x - //SEG88 [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG86 [51] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG89 [54] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG87 [52] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 -- pbuc1_derefidx_vbuxx=vbuaa sta plot_yhi,x - //SEG90 [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG88 [53] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG91 [56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG89 [54] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #7 bne b4 - //SEG92 init_plot_tables::@7 - //SEG93 [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG90 init_plot_tables::@7 + //SEG91 [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -2432,81 +2381,81 @@ init_plot_tables: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG94 [58] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] - //SEG95 [58] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy - //SEG96 init_plot_tables::@4 + //SEG92 [56] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] + //SEG93 [56] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy + //SEG94 init_plot_tables::@4 b4: - //SEG97 [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 -- vbuxx=_inc_vbuxx + //SEG95 [57] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 -- vbuxx=_inc_vbuxx inx - //SEG98 [60] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 -- vbuxx_neq_0_then_la1 + //SEG96 [58] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne b3 - //SEG99 init_plot_tables::@return - //SEG100 [61] return + //SEG97 init_plot_tables::@return + //SEG98 [59] return rts - //SEG101 [62] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] - //SEG102 init_plot_tables::@10 - //SEG103 [45] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] - //SEG104 [45] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy + //SEG99 [60] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] + //SEG100 init_plot_tables::@10 + //SEG101 [43] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] + //SEG102 [43] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy } -//SEG105 init_screen +//SEG103 init_screen init_screen: { .label b = 2 .label c = 2 - //SEG106 [64] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] - //SEG107 [64] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 + //SEG104 [62] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG105 [62] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #BITMAP sta b+1 - //SEG108 [64] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] - //SEG109 [64] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy - //SEG110 init_screen::@1 + //SEG106 [62] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG107 [62] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG108 init_screen::@1 b1: - //SEG111 [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG109 [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (b),y - //SEG112 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 -- pbuz1=_inc_pbuz1 + //SEG110 [64] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 -- pbuz1=_inc_pbuz1 inc b bne !+ inc b+1 !: - //SEG113 [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG111 [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 -- pbuz1_neq_pbuc1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1 lda b cmp #init_screen::@2] - //SEG115 [68] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 + //SEG112 [66] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] + //SEG113 [66] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta c+1 - //SEG116 [68] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] - //SEG117 [68] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy - //SEG118 init_screen::@2 + //SEG114 [66] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] + //SEG115 [66] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy + //SEG116 init_screen::@2 b2: - //SEG119 [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 -- _deref_pbuz1=vbuc1 + //SEG117 [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 -- _deref_pbuz1=vbuc1 lda #$14 ldy #0 sta (c),y - //SEG120 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 + //SEG118 [68] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 inc c bne !+ inc c+1 !: - //SEG121 [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 -- pbuz1_neq_pbuc1_then_la1 + //SEG119 [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 -- pbuz1_neq_pbuc1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2 lda c cmp #=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 to:mulf8s_prepared::@3 mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@6 - [67] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 - [68] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 - [69] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 - [70] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 + [67] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 + [68] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 + [69] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 to:mulf8s_prepared::@1 mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_prepared::@6 - [71] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 ) - [72] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 + [70] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 ) + [71] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 to:mulf8s_prepared::@4 mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1 - [73] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 - [74] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 - [75] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) - [76] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 + [72] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 + [73] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) + [74] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 to:mulf8s_prepared::@2 mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_prepared::@4 - [77] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) + [75] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) to:mulf8s_prepared::@return mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2 - [78] return + [76] return to:@return mulf8u_prepared: scope:[mulf8u_prepared] from mulf8s_prepared - [79] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 + [77] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } - [81] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) + [79] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) to:mulf8u_prepared::@return mulf8u_prepared::@return: scope:[mulf8u_prepared] from mulf8u_prepared - [82] return + [80] return to:@return mulf8u_prepare: scope:[mulf8u_prepare] from anim::mulf8s_prepare1 anim::mulf8s_prepare2 - [83] (byte) mulf8u_prepare::a#2 ← phi( anim::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 anim::mulf8s_prepare2/(byte~) mulf8u_prepare::a#4 ) - [84] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 + [81] (byte) mulf8u_prepare::a#2 ← phi( anim::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 anim::mulf8s_prepare2/(byte~) mulf8u_prepare::a#4 ) + [82] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } to:mulf8u_prepare::@return mulf8u_prepare::@return: scope:[mulf8u_prepare] from mulf8u_prepare - [86] return + [84] return to:@return init: scope:[init] from main - [87] phi() - [88] call mulf_init + [85] phi() + [86] call mulf_init to:init::@3 init::@3: scope:[init] from init - [89] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 + [87] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 to:init::@1 init::@1: scope:[init] from init::@1 init::@3 - [90] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [91] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 - [92] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 - [93] (byte) init::i#1 ← ++ (byte) init::i#2 - [94] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1 + [88] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [89] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 + [90] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 + [91] (byte) init::i#1 ← ++ (byte) init::i#2 + [92] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1 to:init::@return init::@return: scope:[init] from init::@1 - [95] return + [93] return to:@return mulf_init: scope:[mulf_init] from init - [96] phi() + [94] phi() to:mulf_init::@1 mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2 - [97] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) - [97] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) - [97] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) - [97] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) - [97] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) - [98] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 - [99] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [100] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 + [95] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) + [95] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) + [95] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) + [95] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) + [95] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) + [96] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 + [97] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [98] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 to:mulf_init::@5 mulf_init::@5: scope:[mulf_init] from mulf_init::@1 - [101] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 - [102] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 + [99] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 + [100] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 to:mulf_init::@2 mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@5 - [103] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) - [103] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) - [104] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 - [105] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 - [106] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 - [107] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 - [108] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 - [109] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 - [110] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 - [111] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 + [101] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) + [101] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) + [102] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 + [103] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 + [104] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 + [105] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 + [106] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 + [107] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 + [108] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 + [109] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 to:mulf_init::@3 mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4 - [112] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) - [112] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) - [112] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) - [112] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [113] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) - [114] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) - [115] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 - [116] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 - [117] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 + [110] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) + [110] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) + [110] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) + [110] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [111] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) + [112] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) + [113] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 + [114] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 + [115] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 to:mulf_init::@4 mulf_init::@4: scope:[mulf_init] from mulf_init::@12 mulf_init::@3 - [118] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [119] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 - [120] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 + [116] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [117] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 + [118] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 to:mulf_init::@8 mulf_init::@8: scope:[mulf_init] from mulf_init::@4 - [121] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) - [122] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) + [119] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) + [120] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) to:mulf_init::@return mulf_init::@return: scope:[mulf_init] from mulf_init::@8 - [123] return + [121] return to:@return mulf_init::@12: scope:[mulf_init] from mulf_init::@3 - [124] phi() + [122] phi() to:mulf_init::@4 diff --git a/src/test/ref/examples/rotate/rotate.log b/src/test/ref/examples/rotate/rotate.log index 759e932bd..c0f1ee458 100644 --- a/src/test/ref/examples/rotate/rotate.log +++ b/src/test/ref/examples/rotate/rotate.log @@ -238,7 +238,6 @@ mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_pr mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@6 (signed byte) mulf8s_prepared::b#6 ← phi( mulf8s_prepared::@6/(signed byte) mulf8s_prepared::b#7 ) (word) mulf8s_prepared::m#3 ← phi( mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 ) - (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#3 (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#3 (byte~) mulf8s_prepared::$6 ← ((byte)) (signed byte) mulf8s_prepared::b#6 (byte~) mulf8s_prepared::$7 ← (byte~) mulf8s_prepared::$5 - (byte~) mulf8s_prepared::$6 @@ -252,7 +251,6 @@ mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_pr to:mulf8s_prepared::@return mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1 (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#6 ) - (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 (byte~) mulf8s_prepared::$12 ← ((byte)) *((signed byte*) mulf8s_prepared::memA#0) (byte~) mulf8s_prepared::$13 ← (byte~) mulf8s_prepared::$11 - (byte~) mulf8s_prepared::$12 @@ -1070,7 +1068,6 @@ SYMBOL TABLE SSA (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) (byte~) mulf8s_prepared::$0 (word~) mulf8s_prepared::$1 -(byte~) mulf8s_prepared::$10 (byte~) mulf8s_prepared::$11 (byte~) mulf8s_prepared::$12 (byte~) mulf8s_prepared::$13 @@ -1079,7 +1076,6 @@ SYMBOL TABLE SSA (byte~) mulf8s_prepared::$16 (bool~) mulf8s_prepared::$2 (bool~) mulf8s_prepared::$3 -(byte~) mulf8s_prepared::$4 (byte~) mulf8s_prepared::$5 (byte~) mulf8s_prepared::$6 (byte~) mulf8s_prepared::$7 @@ -1250,7 +1246,7 @@ Inversing boolean not [94] (bool~) mulf_init::$4 ← (byte~) mulf_init::$2 != (b Inversing boolean not [124] (bool~) mulf_init::$14 ← (byte) mulf_init::x_255#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [123] (bool~) mulf_init::$13 ← (byte) mulf_init::x_255#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not [164] (bool~) mulf8s_prepared::$3 ← *((signed byte*) mulf8s_prepared::memA#0) >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [163] (bool~) mulf8s_prepared::$2 ← *((signed byte*) mulf8s_prepared::memA#0) < (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not [168] (bool~) mulf8s_prepared::$9 ← (signed byte) mulf8s_prepared::b#5 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [167] (bool~) mulf8s_prepared::$8 ← (signed byte) mulf8s_prepared::b#5 < (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [297] (bool~) anim::$20 ← (byte~) anim::$18 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [296] (bool~) anim::$19 ← (byte~) anim::$18 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [295] (bool~) anim::$20 ← (byte~) anim::$18 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [294] (bool~) anim::$19 ← (byte~) anim::$18 != (byte/signed byte/word/signed word/dword/signed dword) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte*) mulf_init::sqr1_hi#0 = (byte*~) mulf_init::$0 Alias (byte*) mulf_init::sqr1_lo#0 = (byte*~) mulf_init::$1 @@ -1370,10 +1366,10 @@ Simple Condition (bool~) mulf_init::$14 [125] if((byte) mulf_init::x_255#1!=(byt Simple Condition (bool~) mulf_init::$16 [130] if((byte*) mulf_init::sqr2_lo#1!=(byte*~) mulf_init::$15) goto mulf_init::@3 Simple Condition (bool~) mulf8s_prepared::$3 [165] if(*((signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 Simple Condition (bool~) mulf8s_prepared::$9 [169] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -Simple Condition (bool~) init::$4 [215] if((byte) init::i#1!=rangelast(0,7)) goto init::@1 -Simple Condition (bool~) anim::$0 [233] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@5 -Simple Condition (bool~) anim::$20 [298] if((byte~) anim::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8 -Simple Condition (bool~) anim::$26 [311] if((byte) anim::i#1!=rangelast(0,7)) goto anim::@7 +Simple Condition (bool~) init::$4 [213] if((byte) init::i#1!=rangelast(0,7)) goto init::@1 +Simple Condition (bool~) anim::$0 [231] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@5 +Simple Condition (bool~) anim::$20 [296] if((byte~) anim::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8 +Simple Condition (bool~) anim::$26 [309] if((byte) anim::i#1!=rangelast(0,7)) goto anim::@7 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 @@ -1504,12 +1500,12 @@ Successful SSA optimization Pass2ConstantIdentification Consolidated constant in assignment anim::xpos#0 Consolidated constant in assignment anim::ypos#0 Successful SSA optimization Pass2ConstantAdditionElimination -if() condition always true - replacing block destination [70] if(true) goto anim::@2 +if() condition always true - replacing block destination [68] if(true) goto anim::@2 Successful SSA optimization Pass2ConstantIfs Fixing inline constructor with mulf8u_prepared::$0 ← *(mulf8u_prepared::memB#0) w= *(mulf8u_prepared::resL#0) Successful SSA optimization Pass2FixInlineConstructors -Inferred type updated to signed byte in [106] (signed word/signed byte/signed dword~) anim::$15 ← (signed byte~) anim::$14 -Inferred type updated to byte in [113] (byte/signed word/word/dword/signed dword~) anim::$22 ← (byte~) anim::$21 +Inferred type updated to signed byte in [104] (signed word/signed byte/signed dword~) anim::$15 ← (signed byte~) anim::$14 +Inferred type updated to byte in [111] (byte/signed word/word/dword/signed dword~) anim::$22 ← (byte~) anim::$21 Successful SSA optimization PassNEliminateUnusedVars Eliminating Noop Cast (byte) mulf8u_prepared::b#0 ← ((byte)) (signed byte) mulf8s_prepared::b#4 Eliminating Noop Cast (byte~) mulf8s_prepared::$6 ← ((byte)) (signed byte) mulf8s_prepared::b#4 @@ -1609,7 +1605,7 @@ Calls in [] to main:3 Calls in [main] to init:6 anim:8 Calls in [anim] to mulf8u_prepare:18 mulf8s_prepared:21 mulf8s_prepared:27 mulf8u_prepare:32 mulf8s_prepared:35 mulf8s_prepared:42 Calls in [mulf8s_prepared] to mulf8u_prepared:72 -Calls in [init] to mulf_init:101 +Calls in [init] to mulf_init:99 Created 21 initial phi equivalence classes Coalesced [20] mulf8s_prepared::b#8 ← mulf8s_prepared::b#0 @@ -1621,25 +1617,25 @@ Coalesced [67] anim::angle#21 ← anim::angle#1 Coalesced [68] anim::i#15 ← anim::i#1 Coalesced [69] anim::sprite_msb#17 ← anim::sprite_msb#5 Coalesced [70] anim::sprite_msb#19 ← anim::sprite_msb#1 -Coalesced [80] mulf8s_prepared::m#7 ← mulf8s_prepared::m#1 -Coalesced [87] mulf8s_prepared::m#10 ← mulf8s_prepared::m#2 -Coalesced [90] mulf8s_prepared::m#9 ← mulf8s_prepared::m#5 -Coalesced [91] mulf8s_prepared::m#8 ← mulf8s_prepared::m#0 -Coalesced [109] init::i#3 ← init::i#1 -Coalesced [117] mulf_init::sqr#8 ← mulf_init::sqr#2 -Coalesced [118] mulf_init::x_2#7 ← mulf_init::x_2#1 -Coalesced [141] mulf_init::x_255#5 ← mulf_init::x_255#1 -Coalesced [142] mulf_init::sqr2_lo#5 ← mulf_init::sqr2_lo#1 -Coalesced [143] mulf_init::sqr2_hi#5 ← mulf_init::sqr2_hi#1 -Coalesced [144] mulf_init::dir#4 ← mulf_init::dir#3 -Coalesced (already) [145] mulf_init::dir#5 ← mulf_init::dir#2 -Coalesced [146] mulf_init::c#5 ← mulf_init::c#1 -Coalesced [147] mulf_init::sqr#6 ← mulf_init::sqr#1 -Coalesced [148] mulf_init::sqr1_lo#5 ← mulf_init::sqr1_lo#1 -Coalesced [149] mulf_init::sqr1_hi#5 ← mulf_init::sqr1_hi#1 -Coalesced [150] mulf_init::x_2#5 ← mulf_init::x_2#2 -Coalesced [151] mulf_init::sqr#7 ← mulf_init::sqr#4 -Coalesced (already) [152] mulf_init::x_2#6 ← mulf_init::x_2#3 +Coalesced [79] mulf8s_prepared::m#7 ← mulf8s_prepared::m#1 +Coalesced [85] mulf8s_prepared::m#10 ← mulf8s_prepared::m#2 +Coalesced [88] mulf8s_prepared::m#9 ← mulf8s_prepared::m#5 +Coalesced [89] mulf8s_prepared::m#8 ← mulf8s_prepared::m#0 +Coalesced [107] init::i#3 ← init::i#1 +Coalesced [115] mulf_init::sqr#8 ← mulf_init::sqr#2 +Coalesced [116] mulf_init::x_2#7 ← mulf_init::x_2#1 +Coalesced [139] mulf_init::x_255#5 ← mulf_init::x_255#1 +Coalesced [140] mulf_init::sqr2_lo#5 ← mulf_init::sqr2_lo#1 +Coalesced [141] mulf_init::sqr2_hi#5 ← mulf_init::sqr2_hi#1 +Coalesced [142] mulf_init::dir#4 ← mulf_init::dir#3 +Coalesced (already) [143] mulf_init::dir#5 ← mulf_init::dir#2 +Coalesced [144] mulf_init::c#5 ← mulf_init::c#1 +Coalesced [145] mulf_init::sqr#6 ← mulf_init::sqr#1 +Coalesced [146] mulf_init::sqr1_lo#5 ← mulf_init::sqr1_lo#1 +Coalesced [147] mulf_init::sqr1_hi#5 ← mulf_init::sqr1_hi#1 +Coalesced [148] mulf_init::x_2#5 ← mulf_init::x_2#2 +Coalesced [149] mulf_init::sqr#7 ← mulf_init::sqr#4 +Coalesced (already) [150] mulf_init::x_2#6 ← mulf_init::x_2#3 Coalesced down to 16 phi equivalence classes Culled Empty Block (label) anim::@25 Culled Empty Block (label) anim::@26 @@ -1790,114 +1786,112 @@ mulf8s_prepared::@6: scope:[mulf8s_prepared] from mulf8s_prepared [66] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 to:mulf8s_prepared::@3 mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@6 - [67] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 - [68] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 - [69] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 - [70] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 + [67] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 + [68] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 + [69] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 to:mulf8s_prepared::@1 mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_prepared::@6 - [71] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 ) - [72] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 + [70] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 ) + [71] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 to:mulf8s_prepared::@4 mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1 - [73] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 - [74] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 - [75] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) - [76] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 + [72] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 + [73] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) + [74] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 to:mulf8s_prepared::@2 mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_prepared::@4 - [77] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) + [75] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) to:mulf8s_prepared::@return mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2 - [78] return + [76] return to:@return mulf8u_prepared: scope:[mulf8u_prepared] from mulf8s_prepared - [79] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 + [77] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } - [81] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) + [79] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) to:mulf8u_prepared::@return mulf8u_prepared::@return: scope:[mulf8u_prepared] from mulf8u_prepared - [82] return + [80] return to:@return mulf8u_prepare: scope:[mulf8u_prepare] from anim::mulf8s_prepare1 anim::mulf8s_prepare2 - [83] (byte) mulf8u_prepare::a#2 ← phi( anim::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 anim::mulf8s_prepare2/(byte~) mulf8u_prepare::a#4 ) - [84] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 + [81] (byte) mulf8u_prepare::a#2 ← phi( anim::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 anim::mulf8s_prepare2/(byte~) mulf8u_prepare::a#4 ) + [82] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } to:mulf8u_prepare::@return mulf8u_prepare::@return: scope:[mulf8u_prepare] from mulf8u_prepare - [86] return + [84] return to:@return init: scope:[init] from main - [87] phi() - [88] call mulf_init + [85] phi() + [86] call mulf_init to:init::@3 init::@3: scope:[init] from init - [89] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 + [87] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 to:init::@1 init::@1: scope:[init] from init::@1 init::@3 - [90] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [91] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 - [92] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 - [93] (byte) init::i#1 ← ++ (byte) init::i#2 - [94] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1 + [88] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [89] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 + [90] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 + [91] (byte) init::i#1 ← ++ (byte) init::i#2 + [92] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1 to:init::@return init::@return: scope:[init] from init::@1 - [95] return + [93] return to:@return mulf_init: scope:[mulf_init] from init - [96] phi() + [94] phi() to:mulf_init::@1 mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2 - [97] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) - [97] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) - [97] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) - [97] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) - [97] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) - [98] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 - [99] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [100] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 + [95] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) + [95] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) + [95] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) + [95] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) + [95] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) + [96] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 + [97] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [98] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 to:mulf_init::@5 mulf_init::@5: scope:[mulf_init] from mulf_init::@1 - [101] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 - [102] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 + [99] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 + [100] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 to:mulf_init::@2 mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@5 - [103] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) - [103] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) - [104] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 - [105] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 - [106] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 - [107] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 - [108] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 - [109] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 - [110] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 - [111] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 + [101] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) + [101] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) + [102] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 + [103] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 + [104] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 + [105] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 + [106] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 + [107] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 + [108] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 + [109] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 to:mulf_init::@3 mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4 - [112] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) - [112] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) - [112] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) - [112] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [113] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) - [114] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) - [115] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 - [116] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 - [117] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 + [110] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) + [110] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) + [110] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) + [110] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [111] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) + [112] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) + [113] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 + [114] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 + [115] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 to:mulf_init::@4 mulf_init::@4: scope:[mulf_init] from mulf_init::@12 mulf_init::@3 - [118] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [119] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 - [120] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 + [116] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [117] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 + [118] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 to:mulf_init::@8 mulf_init::@8: scope:[mulf_init] from mulf_init::@4 - [121] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) - [122] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) + [119] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) + [120] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) to:mulf_init::@return mulf_init::@return: scope:[mulf_init] from mulf_init::@8 - [123] return + [121] return to:@return mulf_init::@12: scope:[mulf_init] from mulf_init::@3 - [124] phi() + [122] phi() to:mulf_init::@4 @@ -2037,24 +2031,22 @@ VARIABLE REGISTER WEIGHTS (byte*) init::sprites_ptr (void()) main() (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -(byte~) mulf8s_prepared::$10 20.0 (byte~) mulf8s_prepared::$11 4.0 (byte~) mulf8s_prepared::$15 4.0 (byte~) mulf8s_prepared::$16 4.0 -(byte~) mulf8s_prepared::$4 20.0 (byte~) mulf8s_prepared::$5 4.0 (signed byte) mulf8s_prepared::b (signed byte) mulf8s_prepared::b#0 202.0 (signed byte) mulf8s_prepared::b#1 202.0 (signed byte) mulf8s_prepared::b#2 202.0 (signed byte) mulf8s_prepared::b#3 202.0 -(signed byte) mulf8s_prepared::b#4 29.0 +(signed byte) mulf8s_prepared::b#4 31.23076923076923 (word) mulf8s_prepared::m (word) mulf8s_prepared::m#0 2.0 (word) mulf8s_prepared::m#1 4.0 (word) mulf8s_prepared::m#2 4.0 (word) mulf8s_prepared::m#4 0.6666666666666666 -(word) mulf8s_prepared::m#5 2.4 +(word) mulf8s_prepared::m#5 2.5 (signed byte*) mulf8s_prepared::memA (signed word) mulf8s_prepared::return (signed word) mulf8s_prepared::return#10 202.0 @@ -2157,10 +2149,8 @@ Added variable anim::ypos#0 to zero page equivalence class [ anim::ypos#0 ] Added variable anim::i2#0 to zero page equivalence class [ anim::i2#0 ] Added variable anim::$25 to zero page equivalence class [ anim::$25 ] Added variable mulf8u_prepared::return#2 to zero page equivalence class [ mulf8u_prepared::return#2 ] -Added variable mulf8s_prepared::$4 to zero page equivalence class [ mulf8s_prepared::$4 ] Added variable mulf8s_prepared::$5 to zero page equivalence class [ mulf8s_prepared::$5 ] Added variable mulf8s_prepared::$15 to zero page equivalence class [ mulf8s_prepared::$15 ] -Added variable mulf8s_prepared::$10 to zero page equivalence class [ mulf8s_prepared::$10 ] Added variable mulf8s_prepared::$11 to zero page equivalence class [ mulf8s_prepared::$11 ] Added variable mulf8s_prepared::$16 to zero page equivalence class [ mulf8s_prepared::$16 ] Added variable mulf8u_prepared::return#0 to zero page equivalence class [ mulf8u_prepared::return#0 ] @@ -2209,10 +2199,8 @@ Complete equivalence classes [ anim::i2#0 ] [ anim::$25 ] [ mulf8u_prepared::return#2 ] -[ mulf8s_prepared::$4 ] [ mulf8s_prepared::$5 ] [ mulf8s_prepared::$15 ] -[ mulf8s_prepared::$10 ] [ mulf8s_prepared::$11 ] [ mulf8s_prepared::$16 ] [ mulf8u_prepared::return#0 ] @@ -2260,16 +2248,14 @@ Allocated zp ZP_BYTE:60 [ anim::ypos#0 ] Allocated zp ZP_BYTE:61 [ anim::i2#0 ] Allocated zp ZP_BYTE:62 [ anim::$25 ] Allocated zp ZP_WORD:63 [ mulf8u_prepared::return#2 ] -Allocated zp ZP_BYTE:65 [ mulf8s_prepared::$4 ] -Allocated zp ZP_BYTE:66 [ mulf8s_prepared::$5 ] -Allocated zp ZP_BYTE:67 [ mulf8s_prepared::$15 ] -Allocated zp ZP_BYTE:68 [ mulf8s_prepared::$10 ] -Allocated zp ZP_BYTE:69 [ mulf8s_prepared::$11 ] -Allocated zp ZP_BYTE:70 [ mulf8s_prepared::$16 ] -Allocated zp ZP_WORD:71 [ mulf8u_prepared::return#0 ] -Allocated zp ZP_BYTE:73 [ mulf_init::$2 ] -Allocated zp ZP_BYTE:74 [ mulf_init::$5 ] -Allocated zp ZP_BYTE:75 [ mulf_init::$6 ] +Allocated zp ZP_BYTE:65 [ mulf8s_prepared::$5 ] +Allocated zp ZP_BYTE:66 [ mulf8s_prepared::$15 ] +Allocated zp ZP_BYTE:67 [ mulf8s_prepared::$11 ] +Allocated zp ZP_BYTE:68 [ mulf8s_prepared::$16 ] +Allocated zp ZP_WORD:69 [ mulf8u_prepared::return#0 ] +Allocated zp ZP_BYTE:71 [ mulf_init::$2 ] +Allocated zp ZP_BYTE:72 [ mulf_init::$5 ] +Allocated zp ZP_BYTE:73 [ mulf_init::$6 ] INITIAL ASM //SEG0 File Comments @@ -2319,7 +2305,7 @@ main: { //SEG12 asm { sei } sei //SEG13 [6] call init - //SEG14 [87] phi from main to init [phi:main->init] + //SEG14 [85] phi from main to init [phi:main->init] init_from_main: jsr init //SEG15 [7] phi from main to main::@1 [phi:main->main::@1] @@ -2415,9 +2401,9 @@ anim: { lda COS,y sta mulf8u_prepare.a //SEG40 [18] call mulf8u_prepare - //SEG41 [83] phi from anim::mulf8s_prepare1 to mulf8u_prepare [phi:anim::mulf8s_prepare1->mulf8u_prepare] + //SEG41 [81] phi from anim::mulf8s_prepare1 to mulf8u_prepare [phi:anim::mulf8s_prepare1->mulf8u_prepare] mulf8u_prepare_from_mulf8s_prepare1: - //SEG42 [83] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:anim::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy + //SEG42 [81] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:anim::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare jmp b17 //SEG43 anim::@17 @@ -2486,9 +2472,9 @@ anim: { lda SIN,y sta mulf8u_prepare.a //SEG62 [30] call mulf8u_prepare - //SEG63 [83] phi from anim::mulf8s_prepare2 to mulf8u_prepare [phi:anim::mulf8s_prepare2->mulf8u_prepare] + //SEG63 [81] phi from anim::mulf8s_prepare2 to mulf8u_prepare [phi:anim::mulf8s_prepare2->mulf8u_prepare] mulf8u_prepare_from_mulf8s_prepare2: - //SEG64 [83] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#4 [phi:anim::mulf8s_prepare2->mulf8u_prepare#0] -- register_copy + //SEG64 [81] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#4 [phi:anim::mulf8s_prepare2->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare jmp b18 //SEG65 anim::@18 @@ -2661,12 +2647,10 @@ anim: { // mulf8s_prepared(signed byte zeropage(5) b) mulf8s_prepared: { .label memA = $fd - .label _4 = $41 - .label _5 = $42 - .label _10 = $44 - .label _11 = $45 - .label _15 = $43 - .label _16 = $46 + .label _5 = $41 + .label _11 = $43 + .label _15 = $42 + .label _16 = $44 .label m = 6 .label b = 5 .label return = $1a @@ -2695,73 +2679,67 @@ mulf8s_prepared: { jmp b3 //SEG115 mulf8s_prepared::@3 b3: - //SEG116 [67] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 -- vbuz1=_hi_vwuz2 - lda m+1 - sta _4 - //SEG117 [68] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuz1=_hi_vwuz2 + //SEG116 [67] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuz1=_hi_vwuz2 lda m+1 sta _5 - //SEG118 [69] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 -- vbuz1=vbuz2_minus_vbuz3 + //SEG117 [68] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 -- vbuz1=vbuz2_minus_vbuz3 lda _5 sec sbc b sta _15 - //SEG119 [70] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG118 [69] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuz2 lda _15 sta m+1 - //SEG120 [71] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] + //SEG119 [70] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] b1_from_b3: b1_from_b6: - //SEG121 [71] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy + //SEG120 [70] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy jmp b1 - //SEG122 mulf8s_prepared::@1 + //SEG121 mulf8s_prepared::@1 b1: - //SEG123 [72] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 + //SEG122 [71] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 lda b cmp #0 bpl b2_from_b1 jmp b4 - //SEG124 mulf8s_prepared::@4 + //SEG123 mulf8s_prepared::@4 b4: - //SEG125 [73] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 -- vbuz1=_hi_vwuz2 - lda m+1 - sta _10 - //SEG126 [74] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuz1=_hi_vwuz2 + //SEG124 [72] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuz1=_hi_vwuz2 lda m+1 sta _11 - //SEG127 [75] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuz1=vbuz2_minus__deref_pbuc1 + //SEG125 [73] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuz1=vbuz2_minus__deref_pbuc1 lda _11 sec sbc memA sta _16 - //SEG128 [76] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG126 [74] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuz2 lda _16 sta m+1 - //SEG129 [77] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] + //SEG127 [75] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] b2_from_b1: b2_from_b4: - //SEG130 [77] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy + //SEG128 [75] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy jmp b2 - //SEG131 mulf8s_prepared::@2 + //SEG129 mulf8s_prepared::@2 b2: jmp breturn - //SEG132 mulf8s_prepared::@return + //SEG130 mulf8s_prepared::@return breturn: - //SEG133 [78] return + //SEG131 [76] return rts } -//SEG134 mulf8u_prepared +//SEG132 mulf8u_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8u_prepare(byte a) mulf8u_prepared: { .label resL = $fe .label memB = $ff - .label return = $47 + .label return = $45 .label return_2 = $3f - //SEG135 [79] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 -- _deref_pbuc1=vbuz1 + //SEG133 [77] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 -- _deref_pbuc1=vbuz1 lda mulf8s_prepared.b sta memB - //SEG136 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } + //SEG134 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } ldx memB sec sm1: @@ -2774,27 +2752,27 @@ mulf8u_prepared: { sm4: sbc mulf_sqr2_hi,x sta memB - //SEG137 [81] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG135 [79] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda resL sta return lda memB sta return+1 jmp breturn - //SEG138 mulf8u_prepared::@return + //SEG136 mulf8u_prepared::@return breturn: - //SEG139 [82] return + //SEG137 [80] return rts } -//SEG140 mulf8u_prepare +//SEG138 mulf8u_prepare // Prepare for fast multiply with an unsigned byte to a word result // mulf8u_prepare(byte zeropage(8) a) mulf8u_prepare: { .label memA = $fd .label a = 8 - //SEG141 [84] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuz1 + //SEG139 [82] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuz1 lda a sta memA - //SEG142 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } + //SEG140 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } lda memA sta mulf8u_prepared.sm1+1 sta mulf8u_prepared.sm3+1 @@ -2802,63 +2780,63 @@ mulf8u_prepare: { sta mulf8u_prepared.sm2+1 sta mulf8u_prepared.sm4+1 jmp breturn - //SEG143 mulf8u_prepare::@return + //SEG141 mulf8u_prepare::@return breturn: - //SEG144 [86] return + //SEG142 [84] return rts } -//SEG145 init +//SEG143 init init: { .label sprites_ptr = SCREEN+$3f8 .label i = 9 - //SEG146 [88] call mulf_init - //SEG147 [96] phi from init to mulf_init [phi:init->mulf_init] + //SEG144 [86] call mulf_init + //SEG145 [94] phi from init to mulf_init [phi:init->mulf_init] mulf_init_from_init: jsr mulf_init jmp b3 - //SEG148 init::@3 + //SEG146 init::@3 b3: - //SEG149 [89] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG147 [87] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 lda #$ff sta SPRITES_ENABLE - //SEG150 [90] phi from init::@3 to init::@1 [phi:init::@3->init::@1] + //SEG148 [88] phi from init::@3 to init::@1 [phi:init::@3->init::@1] b1_from_b3: - //SEG151 [90] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@1#0] -- vbuz1=vbuc1 + //SEG149 [88] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG152 [90] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG150 [88] phi from init::@1 to init::@1 [phi:init::@1->init::@1] b1_from_b1: - //SEG153 [90] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG151 [88] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy jmp b1 - //SEG154 init::@1 + //SEG152 init::@1 b1: - //SEG155 [91] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG153 [89] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #$ff&SPRITE/$40 sta sprites_ptr,y - //SEG156 [92] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG154 [90] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #GREEN sta SPRITES_COLS,y - //SEG157 [93] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuz1=_inc_vbuz1 + //SEG155 [91] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG158 [94] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG156 [92] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #8 bne b1_from_b1 jmp breturn - //SEG159 init::@return + //SEG157 init::@return breturn: - //SEG160 [95] return + //SEG158 [93] return rts } -//SEG161 mulf_init +//SEG159 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { - .label _2 = $49 - .label _5 = $4a - .label _6 = $4b + .label _2 = $47 + .label _5 = $48 + .label _6 = $49 .label c = $a .label sqr1_hi = $d .label sqr = $10 @@ -2868,88 +2846,88 @@ mulf_init: { .label x_255 = $12 .label sqr2_lo = $13 .label dir = $17 - //SEG162 [97] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG160 [95] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //SEG163 [97] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG161 [95] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG164 [97] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG162 [95] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG165 [97] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG163 [95] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG166 [97] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG164 [95] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #<0 sta sqr lda #>0 sta sqr+1 - //SEG167 [97] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuz1=vbuc1 + //SEG165 [95] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuz1=vbuc1 lda #0 sta c jmp b1 - //SEG168 [97] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG166 [95] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //SEG169 [97] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG170 [97] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG171 [97] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG172 [97] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG173 [97] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG167 [95] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG168 [95] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG169 [95] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG170 [95] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG171 [95] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG174 mulf_init::@1 + //SEG172 mulf_init::@1 b1: - //SEG175 [98] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 + //SEG173 [96] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG176 [99] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG174 [97] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and c sta _2 - //SEG177 [100] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuz1_neq_0_then_la1 + //SEG175 [98] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuz1_neq_0_then_la1 lda _2 cmp #0 bne b2_from_b1 jmp b5 - //SEG178 mulf_init::@5 + //SEG176 mulf_init::@5 b5: - //SEG179 [101] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG177 [99] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG180 [102] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG178 [100] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG181 [103] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG179 [101] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] b2_from_b1: b2_from_b5: - //SEG182 [103] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy - //SEG183 [103] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy + //SEG180 [101] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy + //SEG181 [101] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy jmp b2 - //SEG184 mulf_init::@2 + //SEG182 mulf_init::@2 b2: - //SEG185 [104] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 + //SEG183 [102] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 lda sqr sta _5 - //SEG186 [105] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 + //SEG184 [103] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 lda _5 ldy #0 sta (sqr1_lo),y - //SEG187 [106] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 + //SEG185 [104] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 lda sqr+1 sta _6 - //SEG188 [107] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuz2 + //SEG186 [105] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuz2 lda _6 ldy #0 sta (sqr1_hi),y - //SEG189 [108] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG187 [106] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG190 [109] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG188 [107] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -2957,84 +2935,84 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG191 [110] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG189 [108] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG192 [111] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG190 [109] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo cmp #mulf_init::@3] + //SEG191 [110] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] b3_from_b2: - //SEG194 [112] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 + //SEG192 [110] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG195 [112] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 + //SEG193 [110] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG196 [112] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 + //SEG194 [110] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG197 [112] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuz1=vbuc1 + //SEG195 [110] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuz1=vbuc1 lda #-1 sta x_255 jmp b3 - //SEG198 [112] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG196 [110] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] b3_from_b4: - //SEG199 [112] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy - //SEG200 [112] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy - //SEG201 [112] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy - //SEG202 [112] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG197 [110] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG198 [110] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG199 [110] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG200 [110] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy jmp b3 - //SEG203 mulf_init::@3 + //SEG201 mulf_init::@3 b3: - //SEG204 [113] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG202 [111] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy x_255 lda mulf_sqr1_lo,y ldy #0 sta (sqr2_lo),y - //SEG205 [114] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG203 [112] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy x_255 lda mulf_sqr1_hi,y ldy #0 sta (sqr2_hi),y - //SEG206 [115] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG204 [113] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG207 [116] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG205 [114] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 lda x_255 clc adc dir sta x_255 - //SEG208 [117] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuz1_neq_0_then_la1 + //SEG206 [115] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuz1_neq_0_then_la1 lda x_255 cmp #0 bne b12_from_b3 - //SEG209 [118] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG207 [116] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] b4_from_b3: - //SEG210 [118] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG208 [116] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b4 - //SEG211 mulf_init::@4 + //SEG209 mulf_init::@4 b4: - //SEG212 [119] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG210 [117] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG213 [120] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 + //SEG211 [118] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b3_from_b4 @@ -3042,28 +3020,28 @@ mulf_init: { cmp #mulf_init::@12] + //SEG217 [122] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] b12_from_b3: jmp b12 - //SEG220 mulf_init::@12 + //SEG218 mulf_init::@12 b12: - //SEG221 [118] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG219 [116] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] b4_from_b12: - //SEG222 [118] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG220 [116] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy jmp b4 } // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). @@ -3139,12 +3117,10 @@ Statement [64] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::retu Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ mulf8s_prepared::b#4 mulf8s_prepared::b#0 mulf8s_prepared::b#2 mulf8s_prepared::b#1 mulf8s_prepared::b#3 ] Statement [65] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ) always clobbers reg byte a Statement [66] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [67] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [68] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ) always clobbers reg byte a -Statement [69] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a -Statement [73] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 ] ) always clobbers reg byte a -Statement [74] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ) always clobbers reg byte a -Statement [75] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a +Statement [67] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ) always clobbers reg byte a +Statement [68] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a +Statement [72] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ) always clobbers reg byte a +Statement [73] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a Statement asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:3 [ anim::i#10 anim::i#1 ] @@ -3152,33 +3128,33 @@ Removing always clobbered register reg byte x as potential for zp ZP_BYTE:4 [ an Removing always clobbered register reg byte x as potential for zp ZP_BYTE:24 [ anim::x#0 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:25 [ anim::y#0 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:5 [ mulf8s_prepared::b#4 mulf8s_prepared::b#0 mulf8s_prepared::b#2 mulf8s_prepared::b#1 mulf8s_prepared::b#3 ] -Statement [81] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] ( main:3::anim:8::mulf8s_prepared:20::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:25::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:32::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:38::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] ) always clobbers reg byte a +Statement [79] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] ( main:3::anim:8::mulf8s_prepared:20::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:25::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:32::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:38::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] ) always clobbers reg byte a Statement asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } always clobbers reg byte a -Statement [89] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:3::init:6 [ ] ) always clobbers reg byte a -Statement [91] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::i#2 ] ( main:3::init:6 [ init::i#2 ] ) always clobbers reg byte a +Statement [87] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:3::init:6 [ ] ) always clobbers reg byte a +Statement [89] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::i#2 ] ( main:3::init:6 [ init::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ init::i#2 init::i#1 ] -Statement [92] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 [ init::i#2 ] ( main:3::init:6 [ init::i#2 ] ) always clobbers reg byte a -Statement [99] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a +Statement [90] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 [ init::i#2 ] ( main:3::init:6 [ init::i#2 ] ) always clobbers reg byte a +Statement [97] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ mulf_init::c#2 mulf_init::c#1 ] -Statement [104] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a -Statement [105] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [102] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a +Statement [103] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:10 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:15 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [106] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a -Statement [107] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [109] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [111] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:3::init:6::mulf_init:88 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [113] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:3::init:6::mulf_init:88 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [104] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a +Statement [105] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [107] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [109] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:3::init:6::mulf_init:86 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [111] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:3::init:6::mulf_init:86 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:18 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:18 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ mulf_init::dir#2 mulf_init::dir#3 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:23 [ mulf_init::dir#2 mulf_init::dir#3 ] -Statement [114] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:3::init:6::mulf_init:88 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [116] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [120] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:3::init:6::mulf_init:88 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a -Statement [121] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:3::init:6::mulf_init:88 [ ] ) always clobbers reg byte a -Statement [122] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:3::init:6::mulf_init:88 [ ] ) always clobbers reg byte a +Statement [112] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:3::init:6::mulf_init:86 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [114] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [118] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:3::init:6::mulf_init:86 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a +Statement [119] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:3::init:6::mulf_init:86 [ ] ) always clobbers reg byte a +Statement [120] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:3::init:6::mulf_init:86 [ ] ) always clobbers reg byte a Statement [12] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@4 [ anim::angle#10 ] ( main:3::anim:8 [ anim::angle#10 ] ) always clobbers reg byte a Statement [17] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte)*((const byte*) COS#0 + (byte) anim::angle#10) [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8u_prepare::a#3 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8u_prepare::a#3 ] ) always clobbers reg byte a Statement [21] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::return#2 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::return#2 ] ) always clobbers reg byte a @@ -3208,31 +3184,29 @@ Statement [61] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ anim Statement [64] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] ) always clobbers reg byte a Statement [65] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ) always clobbers reg byte a Statement [66] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [67] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [68] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ) always clobbers reg byte a -Statement [69] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a -Statement [73] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 ] ) always clobbers reg byte a -Statement [74] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ) always clobbers reg byte a -Statement [75] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a +Statement [67] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ) always clobbers reg byte a +Statement [68] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a +Statement [72] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ) always clobbers reg byte a +Statement [73] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a Statement asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } always clobbers reg byte a reg byte x -Statement [81] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] ( main:3::anim:8::mulf8s_prepared:20::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:25::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:32::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:38::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] ) always clobbers reg byte a +Statement [79] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] ( main:3::anim:8::mulf8s_prepared:20::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:25::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:32::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:38::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] ) always clobbers reg byte a Statement asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } always clobbers reg byte a -Statement [89] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:3::init:6 [ ] ) always clobbers reg byte a -Statement [91] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::i#2 ] ( main:3::init:6 [ init::i#2 ] ) always clobbers reg byte a -Statement [92] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 [ init::i#2 ] ( main:3::init:6 [ init::i#2 ] ) always clobbers reg byte a -Statement [99] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a -Statement [104] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a -Statement [105] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [106] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a -Statement [107] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [109] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [111] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:3::init:6::mulf_init:88 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [113] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:3::init:6::mulf_init:88 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [114] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:3::init:6::mulf_init:88 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [116] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [120] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:3::init:6::mulf_init:88 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a -Statement [121] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:3::init:6::mulf_init:88 [ ] ) always clobbers reg byte a -Statement [122] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:3::init:6::mulf_init:88 [ ] ) always clobbers reg byte a +Statement [87] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:3::init:6 [ ] ) always clobbers reg byte a +Statement [89] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::i#2 ] ( main:3::init:6 [ init::i#2 ] ) always clobbers reg byte a +Statement [90] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 [ init::i#2 ] ( main:3::init:6 [ init::i#2 ] ) always clobbers reg byte a +Statement [97] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a +Statement [102] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a +Statement [103] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [104] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a +Statement [105] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [107] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [109] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:3::init:6::mulf_init:86 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [111] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:3::init:6::mulf_init:86 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [112] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:3::init:6::mulf_init:86 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [114] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [118] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:3::init:6::mulf_init:86 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a +Statement [119] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:3::init:6::mulf_init:86 [ ] ) always clobbers reg byte a +Statement [120] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:3::init:6::mulf_init:86 [ ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] : zp ZP_BYTE:2 , reg byte y , Potential registers zp ZP_BYTE:3 [ anim::i#10 anim::i#1 ] : zp ZP_BYTE:3 , reg byte y , Potential registers zp ZP_BYTE:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] : zp ZP_BYTE:4 , reg byte y , @@ -3274,68 +3248,62 @@ Potential registers zp ZP_BYTE:60 [ anim::ypos#0 ] : zp ZP_BYTE:60 , reg byte x Potential registers zp ZP_BYTE:61 [ anim::i2#0 ] : zp ZP_BYTE:61 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:62 [ anim::$25 ] : zp ZP_BYTE:62 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:63 [ mulf8u_prepared::return#2 ] : zp ZP_WORD:63 , -Potential registers zp ZP_BYTE:65 [ mulf8s_prepared::$4 ] : zp ZP_BYTE:65 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:66 [ mulf8s_prepared::$5 ] : zp ZP_BYTE:66 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:67 [ mulf8s_prepared::$15 ] : zp ZP_BYTE:67 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:68 [ mulf8s_prepared::$10 ] : zp ZP_BYTE:68 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:69 [ mulf8s_prepared::$11 ] : zp ZP_BYTE:69 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:70 [ mulf8s_prepared::$16 ] : zp ZP_BYTE:70 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:71 [ mulf8u_prepared::return#0 ] : zp ZP_WORD:71 , -Potential registers zp ZP_BYTE:73 [ mulf_init::$2 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:74 [ mulf_init::$5 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:75 [ mulf_init::$6 ] : zp ZP_BYTE:75 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:65 [ mulf8s_prepared::$5 ] : zp ZP_BYTE:65 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:66 [ mulf8s_prepared::$15 ] : zp ZP_BYTE:66 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:67 [ mulf8s_prepared::$11 ] : zp ZP_BYTE:67 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:68 [ mulf8s_prepared::$16 ] : zp ZP_BYTE:68 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:69 [ mulf8u_prepared::return#0 ] : zp ZP_WORD:69 , +Potential registers zp ZP_BYTE:71 [ mulf_init::$2 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:72 [ mulf_init::$5 ] : zp ZP_BYTE:72 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:73 [ mulf_init::$6 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES Uplift Scope [anim] 344.2: zp ZP_BYTE:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] 202: zp ZP_WORD:28 [ anim::$4 ] 202: zp ZP_WORD:34 [ anim::$6 ] 202: zp ZP_WORD:40 [ anim::$9 ] 202: zp ZP_WORD:42 [ anim::$10 ] 202: zp ZP_WORD:48 [ anim::$11 ] 202: zp ZP_WORD:50 [ anim::$12 ] 202: zp ZP_BYTE:55 [ anim::$15 ] 202: zp ZP_BYTE:58 [ anim::$18 ] 202: zp ZP_BYTE:59 [ anim::$22 ] 202: zp ZP_BYTE:62 [ anim::$25 ] 163.24: zp ZP_BYTE:3 [ anim::i#10 anim::i#1 ] 101: zp ZP_BYTE:54 [ anim::$13 ] 101: zp ZP_BYTE:61 [ anim::i2#0 ] 50.5: zp ZP_BYTE:60 [ anim::ypos#0 ] 33.67: zp ZP_WORD:56 [ anim::xpos#0 ] 28.86: zp ZP_WORD:44 [ anim::xr#1 ] 22.44: zp ZP_WORD:52 [ anim::yr#1 ] 20.2: zp ZP_BYTE:25 [ anim::y#0 ] 15.54: zp ZP_WORD:30 [ anim::xr#0 ] 14.43: zp ZP_WORD:36 [ anim::yr#0 ] 13.77: zp ZP_BYTE:24 [ anim::x#0 ] 11.45: zp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] -Uplift Scope [mulf8s_prepared] 837: zp ZP_BYTE:5 [ mulf8s_prepared::b#4 mulf8s_prepared::b#0 mulf8s_prepared::b#2 mulf8s_prepared::b#1 mulf8s_prepared::b#3 ] 202: zp ZP_WORD:26 [ mulf8s_prepared::return#2 ] 202: zp ZP_WORD:32 [ mulf8s_prepared::return#3 ] 202: zp ZP_WORD:38 [ mulf8s_prepared::return#4 ] 202: zp ZP_WORD:46 [ mulf8s_prepared::return#10 ] 20: zp ZP_BYTE:65 [ mulf8s_prepared::$4 ] 20: zp ZP_BYTE:68 [ mulf8s_prepared::$10 ] 13.07: zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] 4: zp ZP_BYTE:66 [ mulf8s_prepared::$5 ] 4: zp ZP_BYTE:67 [ mulf8s_prepared::$15 ] 4: zp ZP_BYTE:69 [ mulf8s_prepared::$11 ] 4: zp ZP_BYTE:70 [ mulf8s_prepared::$16 ] +Uplift Scope [mulf8s_prepared] 839.23: zp ZP_BYTE:5 [ mulf8s_prepared::b#4 mulf8s_prepared::b#0 mulf8s_prepared::b#2 mulf8s_prepared::b#1 mulf8s_prepared::b#3 ] 202: zp ZP_WORD:26 [ mulf8s_prepared::return#2 ] 202: zp ZP_WORD:32 [ mulf8s_prepared::return#3 ] 202: zp ZP_WORD:38 [ mulf8s_prepared::return#4 ] 202: zp ZP_WORD:46 [ mulf8s_prepared::return#10 ] 13.17: zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] 4: zp ZP_BYTE:65 [ mulf8s_prepared::$5 ] 4: zp ZP_BYTE:66 [ mulf8s_prepared::$15 ] 4: zp ZP_BYTE:67 [ mulf8s_prepared::$11 ] 4: zp ZP_BYTE:68 [ mulf8s_prepared::$16 ] Uplift Scope [mulf8u_prepare] 608: zp ZP_BYTE:8 [ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#4 ] -Uplift Scope [mulf_init] 45.1: zp ZP_WORD:16 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 24.36: zp ZP_BYTE:10 [ mulf_init::c#2 mulf_init::c#1 ] 24.14: zp ZP_BYTE:15 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp ZP_BYTE:73 [ mulf_init::$2 ] 22: zp ZP_BYTE:74 [ mulf_init::$5 ] 22: zp ZP_BYTE:75 [ mulf_init::$6 ] 20.62: zp ZP_WORD:19 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 19.04: zp ZP_WORD:11 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 16.5: zp ZP_BYTE:18 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 14.14: zp ZP_WORD:21 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 12.05: zp ZP_BYTE:23 [ mulf_init::dir#2 mulf_init::dir#3 ] 8.5: zp ZP_WORD:13 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplift Scope [mulf_init] 45.1: zp ZP_WORD:16 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 24.36: zp ZP_BYTE:10 [ mulf_init::c#2 mulf_init::c#1 ] 24.14: zp ZP_BYTE:15 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp ZP_BYTE:71 [ mulf_init::$2 ] 22: zp ZP_BYTE:72 [ mulf_init::$5 ] 22: zp ZP_BYTE:73 [ mulf_init::$6 ] 20.62: zp ZP_WORD:19 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 19.04: zp ZP_WORD:11 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 16.5: zp ZP_BYTE:18 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 14.14: zp ZP_WORD:21 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 12.05: zp ZP_BYTE:23 [ mulf_init::dir#2 mulf_init::dir#3 ] 8.5: zp ZP_WORD:13 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Uplift Scope [init] 31.17: zp ZP_BYTE:9 [ init::i#2 init::i#1 ] -Uplift Scope [mulf8u_prepared] 4: zp ZP_WORD:63 [ mulf8u_prepared::return#2 ] 1.33: zp ZP_WORD:71 [ mulf8u_prepared::return#0 ] +Uplift Scope [mulf8u_prepared] 4: zp ZP_WORD:63 [ mulf8u_prepared::return#2 ] 1.33: zp ZP_WORD:69 [ mulf8u_prepared::return#0 ] Uplift Scope [main] Uplift Scope [] -Uplifting [anim] best 53531 combination zp ZP_BYTE:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] zp ZP_WORD:28 [ anim::$4 ] zp ZP_WORD:34 [ anim::$6 ] zp ZP_WORD:40 [ anim::$9 ] zp ZP_WORD:42 [ anim::$10 ] zp ZP_WORD:48 [ anim::$11 ] zp ZP_WORD:50 [ anim::$12 ] reg byte a [ anim::$15 ] reg byte a [ anim::$18 ] reg byte a [ anim::$22 ] zp ZP_BYTE:62 [ anim::$25 ] zp ZP_BYTE:3 [ anim::i#10 anim::i#1 ] zp ZP_BYTE:54 [ anim::$13 ] zp ZP_BYTE:61 [ anim::i2#0 ] zp ZP_BYTE:60 [ anim::ypos#0 ] zp ZP_WORD:56 [ anim::xpos#0 ] zp ZP_WORD:44 [ anim::xr#1 ] zp ZP_WORD:52 [ anim::yr#1 ] zp ZP_BYTE:25 [ anim::y#0 ] zp ZP_WORD:30 [ anim::xr#0 ] zp ZP_WORD:36 [ anim::yr#0 ] zp ZP_BYTE:24 [ anim::x#0 ] zp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] +Uplifting [anim] best 53519 combination zp ZP_BYTE:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] zp ZP_WORD:28 [ anim::$4 ] zp ZP_WORD:34 [ anim::$6 ] zp ZP_WORD:40 [ anim::$9 ] zp ZP_WORD:42 [ anim::$10 ] zp ZP_WORD:48 [ anim::$11 ] zp ZP_WORD:50 [ anim::$12 ] reg byte a [ anim::$15 ] reg byte a [ anim::$18 ] reg byte a [ anim::$22 ] zp ZP_BYTE:62 [ anim::$25 ] zp ZP_BYTE:3 [ anim::i#10 anim::i#1 ] zp ZP_BYTE:54 [ anim::$13 ] zp ZP_BYTE:61 [ anim::i2#0 ] zp ZP_BYTE:60 [ anim::ypos#0 ] zp ZP_WORD:56 [ anim::xpos#0 ] zp ZP_WORD:44 [ anim::xr#1 ] zp ZP_WORD:52 [ anim::yr#1 ] zp ZP_BYTE:25 [ anim::y#0 ] zp ZP_WORD:30 [ anim::xr#0 ] zp ZP_WORD:36 [ anim::yr#0 ] zp ZP_BYTE:24 [ anim::x#0 ] zp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] Limited combination testing to 100 combinations of 368640 possible. -Uplifting [mulf8s_prepared] best 52316 combination reg byte y [ mulf8s_prepared::b#4 mulf8s_prepared::b#0 mulf8s_prepared::b#2 mulf8s_prepared::b#1 mulf8s_prepared::b#3 ] zp ZP_WORD:26 [ mulf8s_prepared::return#2 ] zp ZP_WORD:32 [ mulf8s_prepared::return#3 ] zp ZP_WORD:38 [ mulf8s_prepared::return#4 ] zp ZP_WORD:46 [ mulf8s_prepared::return#10 ] reg byte a [ mulf8s_prepared::$4 ] reg byte a [ mulf8s_prepared::$10 ] zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] reg byte a [ mulf8s_prepared::$5 ] zp ZP_BYTE:67 [ mulf8s_prepared::$15 ] zp ZP_BYTE:69 [ mulf8s_prepared::$11 ] zp ZP_BYTE:70 [ mulf8s_prepared::$16 ] -Limited combination testing to 100 combinations of 8192 possible. -Uplifting [mulf8u_prepare] best 51713 combination reg byte a [ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#4 ] -Uplifting [mulf_init] best 51463 combination zp ZP_WORD:16 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_BYTE:15 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$2 ] reg byte a [ mulf_init::$5 ] reg byte a [ mulf_init::$6 ] zp ZP_WORD:19 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:11 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] zp ZP_BYTE:18 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_WORD:21 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_BYTE:23 [ mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_WORD:13 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplifting [mulf8s_prepared] best 52298 combination reg byte y [ mulf8s_prepared::b#4 mulf8s_prepared::b#0 mulf8s_prepared::b#2 mulf8s_prepared::b#1 mulf8s_prepared::b#3 ] zp ZP_WORD:26 [ mulf8s_prepared::return#2 ] zp ZP_WORD:32 [ mulf8s_prepared::return#3 ] zp ZP_WORD:38 [ mulf8s_prepared::return#4 ] zp ZP_WORD:46 [ mulf8s_prepared::return#10 ] zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] reg byte a [ mulf8s_prepared::$5 ] reg byte a [ mulf8s_prepared::$15 ] reg byte a [ mulf8s_prepared::$11 ] zp ZP_BYTE:68 [ mulf8s_prepared::$16 ] +Limited combination testing to 100 combinations of 512 possible. +Uplifting [mulf8u_prepare] best 51695 combination reg byte a [ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#4 ] +Uplifting [mulf_init] best 51445 combination zp ZP_WORD:16 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_BYTE:15 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$2 ] reg byte a [ mulf_init::$5 ] reg byte a [ mulf_init::$6 ] zp ZP_WORD:19 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:11 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] zp ZP_BYTE:18 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_WORD:21 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_BYTE:23 [ mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_WORD:13 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [init] best 51313 combination reg byte x [ init::i#2 init::i#1 ] -Uplifting [mulf8u_prepared] best 51313 combination zp ZP_WORD:63 [ mulf8u_prepared::return#2 ] zp ZP_WORD:71 [ mulf8u_prepared::return#0 ] -Uplifting [main] best 51313 combination -Uplifting [] best 51313 combination +Uplifting [init] best 51295 combination reg byte x [ init::i#2 init::i#1 ] +Uplifting [mulf8u_prepared] best 51295 combination zp ZP_WORD:63 [ mulf8u_prepared::return#2 ] zp ZP_WORD:69 [ mulf8u_prepared::return#0 ] +Uplifting [main] best 51295 combination +Uplifting [] best 51295 combination Attempting to uplift remaining variables inzp ZP_BYTE:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] -Uplifting [anim] best 51313 combination zp ZP_BYTE:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] +Uplifting [anim] best 51295 combination zp ZP_BYTE:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:62 [ anim::$25 ] -Uplifting [anim] best 50713 combination reg byte a [ anim::$25 ] +Uplifting [anim] best 50695 combination reg byte a [ anim::$25 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ anim::i#10 anim::i#1 ] -Uplifting [anim] best 50713 combination zp ZP_BYTE:3 [ anim::i#10 anim::i#1 ] +Uplifting [anim] best 50695 combination zp ZP_BYTE:3 [ anim::i#10 anim::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:54 [ anim::$13 ] -Uplifting [anim] best 50113 combination reg byte a [ anim::$13 ] +Uplifting [anim] best 50095 combination reg byte a [ anim::$13 ] Attempting to uplift remaining variables inzp ZP_BYTE:61 [ anim::i2#0 ] -Uplifting [anim] best 49413 combination reg byte x [ anim::i2#0 ] +Uplifting [anim] best 49395 combination reg byte x [ anim::i2#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:60 [ anim::ypos#0 ] -Uplifting [anim] best 49213 combination reg byte y [ anim::ypos#0 ] +Uplifting [anim] best 49195 combination reg byte y [ anim::ypos#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:15 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Uplifting [mulf_init] best 49213 combination zp ZP_BYTE:15 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] +Uplifting [mulf_init] best 49195 combination zp ZP_BYTE:15 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:25 [ anim::y#0 ] -Uplifting [anim] best 49213 combination zp ZP_BYTE:25 [ anim::y#0 ] +Uplifting [anim] best 49195 combination zp ZP_BYTE:25 [ anim::y#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:18 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Uplifting [mulf_init] best 49073 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Uplifting [mulf_init] best 49055 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:24 [ anim::x#0 ] -Uplifting [anim] best 49073 combination zp ZP_BYTE:24 [ anim::x#0 ] +Uplifting [anim] best 49055 combination zp ZP_BYTE:24 [ anim::x#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:23 [ mulf_init::dir#2 mulf_init::dir#3 ] -Uplifting [mulf_init] best 49073 combination zp ZP_BYTE:23 [ mulf_init::dir#2 mulf_init::dir#3 ] +Uplifting [mulf_init] best 49055 combination zp ZP_BYTE:23 [ mulf_init::dir#2 mulf_init::dir#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] -Uplifting [anim] best 49073 combination zp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:67 [ mulf8s_prepared::$15 ] -Uplifting [mulf8s_prepared] best 49067 combination reg byte a [ mulf8s_prepared::$15 ] -Attempting to uplift remaining variables inzp ZP_BYTE:69 [ mulf8s_prepared::$11 ] -Uplifting [mulf8s_prepared] best 49061 combination reg byte a [ mulf8s_prepared::$11 ] -Attempting to uplift remaining variables inzp ZP_BYTE:70 [ mulf8s_prepared::$16 ] -Uplifting [mulf8s_prepared] best 49055 combination reg byte a [ mulf8s_prepared::$16 ] +Uplifting [anim] best 49055 combination zp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:68 [ mulf8s_prepared::$16 ] +Uplifting [mulf8s_prepared] best 49049 combination reg byte a [ mulf8s_prepared::$16 ] Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] ] with [ zp ZP_WORD:26 [ mulf8s_prepared::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 ] ] with [ zp ZP_WORD:32 [ mulf8s_prepared::return#3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8s_prepared::return#3 ] ] with [ zp ZP_WORD:38 [ mulf8s_prepared::return#4 ] ] - score: 1 @@ -3347,7 +3315,7 @@ Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ anim::$9 Coalescing zero page register with common assignment [ zp ZP_WORD:48 [ anim::$11 ] ] with [ zp ZP_WORD:50 [ anim::$12 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8s_prepared::return#3 mulf8s_prepared::return#4 mulf8s_prepared::return#10 mulf8u_prepared::return#2 ] ] with [ zp ZP_WORD:40 [ anim::$9 anim::$10 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8s_prepared::return#3 mulf8s_prepared::return#4 mulf8s_prepared::return#10 mulf8u_prepared::return#2 anim::$9 anim::$10 ] ] with [ zp ZP_WORD:48 [ anim::$11 anim::$12 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8s_prepared::return#3 mulf8s_prepared::return#4 mulf8s_prepared::return#10 mulf8u_prepared::return#2 anim::$9 anim::$10 anim::$11 anim::$12 ] ] with [ zp ZP_WORD:71 [ mulf8u_prepared::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8s_prepared::return#3 mulf8s_prepared::return#4 mulf8s_prepared::return#10 mulf8u_prepared::return#2 anim::$9 anim::$10 anim::$11 anim::$12 ] ] with [ zp ZP_WORD:69 [ mulf8u_prepared::return#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:28 [ anim::$4 anim::xr#0 ] ] with [ zp ZP_WORD:44 [ anim::xr#1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ anim::$6 anim::yr#0 ] ] with [ zp ZP_WORD:52 [ anim::yr#1 ] ] - score: 1 Coalescing zero page register [ zp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] ] with [ zp ZP_BYTE:15 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] ] @@ -3412,7 +3380,7 @@ main: { //SEG12 asm { sei } sei //SEG13 [6] call init - //SEG14 [87] phi from main to init [phi:main->init] + //SEG14 [85] phi from main to init [phi:main->init] init_from_main: jsr init //SEG15 [7] phi from main to main::@1 [phi:main->main::@1] @@ -3498,9 +3466,9 @@ anim: { ldy angle lda COS,y //SEG40 [18] call mulf8u_prepare - //SEG41 [83] phi from anim::mulf8s_prepare1 to mulf8u_prepare [phi:anim::mulf8s_prepare1->mulf8u_prepare] + //SEG41 [81] phi from anim::mulf8s_prepare1 to mulf8u_prepare [phi:anim::mulf8s_prepare1->mulf8u_prepare] mulf8u_prepare_from_mulf8s_prepare1: - //SEG42 [83] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:anim::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy + //SEG42 [81] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:anim::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare jmp b17 //SEG43 anim::@17 @@ -3550,9 +3518,9 @@ anim: { ldy angle lda SIN,y //SEG62 [30] call mulf8u_prepare - //SEG63 [83] phi from anim::mulf8s_prepare2 to mulf8u_prepare [phi:anim::mulf8s_prepare2->mulf8u_prepare] + //SEG63 [81] phi from anim::mulf8s_prepare2 to mulf8u_prepare [phi:anim::mulf8s_prepare2->mulf8u_prepare] mulf8u_prepare_from_mulf8s_prepare2: - //SEG64 [83] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#4 [phi:anim::mulf8s_prepare2->mulf8u_prepare#0] -- register_copy + //SEG64 [81] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#4 [phi:anim::mulf8s_prepare2->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare jmp b18 //SEG65 anim::@18 @@ -3703,61 +3671,57 @@ mulf8s_prepared: { jmp b3 //SEG115 mulf8s_prepared::@3 b3: - //SEG116 [67] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 + //SEG116 [67] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG117 [68] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 - lda m+1 - //SEG118 [69] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 -- vbuaa=vbuaa_minus_vbuyy + //SEG117 [68] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 -- vbuaa=vbuaa_minus_vbuyy sty $ff sec sbc $ff - //SEG119 [70] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa + //SEG118 [69] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG120 [71] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] + //SEG119 [70] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] b1_from_b3: b1_from_b6: - //SEG121 [71] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy + //SEG120 [70] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy jmp b1 - //SEG122 mulf8s_prepared::@1 + //SEG121 mulf8s_prepared::@1 b1: - //SEG123 [72] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsyy_ge_0_then_la1 + //SEG122 [71] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsyy_ge_0_then_la1 cpy #0 bpl b2_from_b1 jmp b4 - //SEG124 mulf8s_prepared::@4 + //SEG123 mulf8s_prepared::@4 b4: - //SEG125 [73] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 + //SEG124 [72] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG126 [74] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 - lda m+1 - //SEG127 [75] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuaa=vbuaa_minus__deref_pbuc1 + //SEG125 [73] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuaa=vbuaa_minus__deref_pbuc1 sec sbc memA - //SEG128 [76] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa + //SEG126 [74] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG129 [77] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] + //SEG127 [75] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] b2_from_b1: b2_from_b4: - //SEG130 [77] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy + //SEG128 [75] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy jmp b2 - //SEG131 mulf8s_prepared::@2 + //SEG129 mulf8s_prepared::@2 b2: jmp breturn - //SEG132 mulf8s_prepared::@return + //SEG130 mulf8s_prepared::@return breturn: - //SEG133 [78] return + //SEG131 [76] return rts } -//SEG134 mulf8u_prepared +//SEG132 mulf8u_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8u_prepare(byte a) mulf8u_prepared: { .label resL = $fe .label memB = $ff .label return = 5 - //SEG135 [79] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 -- _deref_pbuc1=vbuyy + //SEG133 [77] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 -- _deref_pbuc1=vbuyy sty memB - //SEG136 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } + //SEG134 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } ldx memB sec sm1: @@ -3770,25 +3734,25 @@ mulf8u_prepared: { sm4: sbc mulf_sqr2_hi,x sta memB - //SEG137 [81] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG135 [79] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda resL sta return lda memB sta return+1 jmp breturn - //SEG138 mulf8u_prepared::@return + //SEG136 mulf8u_prepared::@return breturn: - //SEG139 [82] return + //SEG137 [80] return rts } -//SEG140 mulf8u_prepare +//SEG138 mulf8u_prepare // Prepare for fast multiply with an unsigned byte to a word result // mulf8u_prepare(byte register(A) a) mulf8u_prepare: { .label memA = $fd - //SEG141 [84] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa + //SEG139 [82] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa sta memA - //SEG142 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } + //SEG140 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } lda memA sta mulf8u_prepared.sm1+1 sta mulf8u_prepared.sm3+1 @@ -3796,53 +3760,53 @@ mulf8u_prepare: { sta mulf8u_prepared.sm2+1 sta mulf8u_prepared.sm4+1 jmp breturn - //SEG143 mulf8u_prepare::@return + //SEG141 mulf8u_prepare::@return breturn: - //SEG144 [86] return + //SEG142 [84] return rts } -//SEG145 init +//SEG143 init init: { .label sprites_ptr = SCREEN+$3f8 - //SEG146 [88] call mulf_init - //SEG147 [96] phi from init to mulf_init [phi:init->mulf_init] + //SEG144 [86] call mulf_init + //SEG145 [94] phi from init to mulf_init [phi:init->mulf_init] mulf_init_from_init: jsr mulf_init jmp b3 - //SEG148 init::@3 + //SEG146 init::@3 b3: - //SEG149 [89] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG147 [87] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 lda #$ff sta SPRITES_ENABLE - //SEG150 [90] phi from init::@3 to init::@1 [phi:init::@3->init::@1] + //SEG148 [88] phi from init::@3 to init::@1 [phi:init::@3->init::@1] b1_from_b3: - //SEG151 [90] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@1#0] -- vbuxx=vbuc1 + //SEG149 [88] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG152 [90] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG150 [88] phi from init::@1 to init::@1 [phi:init::@1->init::@1] b1_from_b1: - //SEG153 [90] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG151 [88] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy jmp b1 - //SEG154 init::@1 + //SEG152 init::@1 b1: - //SEG155 [91] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG153 [89] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuc1_derefidx_vbuxx=vbuc2 lda #$ff&SPRITE/$40 sta sprites_ptr,x - //SEG156 [92] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG154 [90] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #GREEN sta SPRITES_COLS,x - //SEG157 [93] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx + //SEG155 [91] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG158 [94] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG156 [92] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1_from_b1 jmp breturn - //SEG159 init::@return + //SEG157 init::@return breturn: - //SEG160 [95] return + //SEG158 [93] return rts } -//SEG161 mulf_init +//SEG159 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label sqr1_hi = 7 @@ -3852,81 +3816,81 @@ mulf_init: { .label sqr2_hi = 7 .label sqr2_lo = 5 .label dir = 2 - //SEG162 [97] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG160 [95] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //SEG163 [97] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG161 [95] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG164 [97] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG162 [95] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG165 [97] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG163 [95] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG166 [97] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG164 [95] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #<0 sta sqr lda #>0 sta sqr+1 - //SEG167 [97] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 + //SEG165 [95] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG168 [97] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG166 [95] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //SEG169 [97] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG170 [97] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG171 [97] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG172 [97] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG173 [97] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG167 [95] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG168 [95] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG169 [95] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG170 [95] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG171 [95] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG174 mulf_init::@1 + //SEG172 mulf_init::@1 b1: - //SEG175 [98] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG173 [96] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG176 [99] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG174 [97] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG177 [100] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 + //SEG175 [98] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 cmp #0 bne b2_from_b1 jmp b5 - //SEG178 mulf_init::@5 + //SEG176 mulf_init::@5 b5: - //SEG179 [101] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG177 [99] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG180 [102] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG178 [100] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG181 [103] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG179 [101] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] b2_from_b1: b2_from_b5: - //SEG182 [103] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy - //SEG183 [103] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy + //SEG180 [101] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy + //SEG181 [101] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy jmp b2 - //SEG184 mulf_init::@2 + //SEG182 mulf_init::@2 b2: - //SEG185 [104] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG183 [102] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG186 [105] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa + //SEG184 [103] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG187 [106] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG185 [104] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG188 [107] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa + //SEG186 [105] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_hi),y - //SEG189 [108] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG187 [106] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG190 [109] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG188 [107] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -3934,80 +3898,80 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG191 [110] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG189 [108] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG192 [111] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG190 [109] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo cmp #mulf_init::@3] + //SEG191 [110] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] b3_from_b2: - //SEG194 [112] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 + //SEG192 [110] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG195 [112] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 + //SEG193 [110] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG196 [112] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 + //SEG194 [110] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG197 [112] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 + //SEG195 [110] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 ldx #-1 jmp b3 - //SEG198 [112] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG196 [110] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] b3_from_b4: - //SEG199 [112] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy - //SEG200 [112] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy - //SEG201 [112] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy - //SEG202 [112] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG197 [110] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG198 [110] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG199 [110] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG200 [110] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy jmp b3 - //SEG203 mulf_init::@3 + //SEG201 mulf_init::@3 b3: - //SEG204 [113] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG202 [111] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG205 [114] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG203 [112] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_hi,x ldy #0 sta (sqr2_hi),y - //SEG206 [115] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG204 [113] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG207 [116] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG205 [114] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - //SEG208 [117] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 + //SEG206 [115] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 cpx #0 bne b12_from_b3 - //SEG209 [118] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG207 [116] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] b4_from_b3: - //SEG210 [118] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG208 [116] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b4 - //SEG211 mulf_init::@4 + //SEG209 mulf_init::@4 b4: - //SEG212 [119] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG210 [117] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG213 [120] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 + //SEG211 [118] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b3_from_b4 @@ -4015,28 +3979,28 @@ mulf_init: { cmp #mulf_init::@12] + //SEG217 [122] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] b12_from_b3: jmp b12 - //SEG220 mulf_init::@12 + //SEG218 mulf_init::@12 b12: - //SEG221 [118] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG219 [116] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] b4_from_b12: - //SEG222 [118] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG220 [116] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy jmp b4 } // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). @@ -4117,8 +4081,6 @@ Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda #0 Removing instruction ldy i Removing instruction lda xpos+1 -Removing instruction lda m+1 -Removing instruction lda m+1 Removing instruction lda memA Removing instruction lda #>0 Replacing instruction ldx #0 with TAX @@ -4390,11 +4352,9 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -(byte~) mulf8s_prepared::$10 reg byte a 20.0 (byte~) mulf8s_prepared::$11 reg byte a 4.0 (byte~) mulf8s_prepared::$15 reg byte a 4.0 (byte~) mulf8s_prepared::$16 reg byte a 4.0 -(byte~) mulf8s_prepared::$4 reg byte a 20.0 (byte~) mulf8s_prepared::$5 reg byte a 4.0 (label) mulf8s_prepared::@1 (label) mulf8s_prepared::@2 @@ -4407,13 +4367,13 @@ FINAL SYMBOL TABLE (signed byte) mulf8s_prepared::b#1 reg byte y 202.0 (signed byte) mulf8s_prepared::b#2 reg byte y 202.0 (signed byte) mulf8s_prepared::b#3 reg byte y 202.0 -(signed byte) mulf8s_prepared::b#4 reg byte y 29.0 +(signed byte) mulf8s_prepared::b#4 reg byte y 31.23076923076923 (word) mulf8s_prepared::m (word) mulf8s_prepared::m#0 m zp ZP_WORD:5 2.0 (word) mulf8s_prepared::m#1 m zp ZP_WORD:5 4.0 (word) mulf8s_prepared::m#2 m zp ZP_WORD:5 4.0 (word) mulf8s_prepared::m#4 m zp ZP_WORD:5 0.6666666666666666 -(word) mulf8s_prepared::m#5 m zp ZP_WORD:5 2.4 +(word) mulf8s_prepared::m#5 m zp ZP_WORD:5 2.5 (signed byte*) mulf8s_prepared::memA (const signed byte*) mulf8s_prepared::memA#0 memA = ((signed byte*))(byte/word/signed word/dword/signed dword) 253 (signed word) mulf8s_prepared::return @@ -4514,10 +4474,8 @@ reg byte a [ anim::$22 ] reg byte y [ anim::ypos#0 ] reg byte x [ anim::i2#0 ] reg byte a [ anim::$25 ] -reg byte a [ mulf8s_prepared::$4 ] reg byte a [ mulf8s_prepared::$5 ] reg byte a [ mulf8s_prepared::$15 ] -reg byte a [ mulf8s_prepared::$10 ] reg byte a [ mulf8s_prepared::$11 ] reg byte a [ mulf8s_prepared::$16 ] reg byte a [ mulf_init::$2 ] @@ -4566,7 +4524,7 @@ main: { //SEG12 asm { sei } sei //SEG13 [6] call init - //SEG14 [87] phi from main to init [phi:main->init] + //SEG14 [85] phi from main to init [phi:main->init] jsr init //SEG15 [7] phi from main to main::@1 [phi:main->main::@1] //SEG16 main::@1 @@ -4631,8 +4589,8 @@ anim: { ldy angle lda COS,y //SEG40 [18] call mulf8u_prepare - //SEG41 [83] phi from anim::mulf8s_prepare1 to mulf8u_prepare [phi:anim::mulf8s_prepare1->mulf8u_prepare] - //SEG42 [83] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:anim::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy + //SEG41 [81] phi from anim::mulf8s_prepare1 to mulf8u_prepare [phi:anim::mulf8s_prepare1->mulf8u_prepare] + //SEG42 [81] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:anim::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare //SEG43 anim::@17 //SEG44 [19] (signed byte) mulf8s_prepared::b#0 ← (signed byte) anim::x#0 -- vbsyy=vbsz1 @@ -4672,8 +4630,8 @@ anim: { ldy angle lda SIN,y //SEG62 [30] call mulf8u_prepare - //SEG63 [83] phi from anim::mulf8s_prepare2 to mulf8u_prepare [phi:anim::mulf8s_prepare2->mulf8u_prepare] - //SEG64 [83] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#4 [phi:anim::mulf8s_prepare2->mulf8u_prepare#0] -- register_copy + //SEG63 [81] phi from anim::mulf8s_prepare2 to mulf8u_prepare [phi:anim::mulf8s_prepare2->mulf8u_prepare] + //SEG64 [81] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#4 [phi:anim::mulf8s_prepare2->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare //SEG65 anim::@18 //SEG66 [31] (signed byte) mulf8s_prepared::b#2 ← (signed byte) anim::y#0 -- vbsyy=vbsz1 @@ -4805,49 +4763,47 @@ mulf8s_prepared: { cmp #0 bpl b1 //SEG115 mulf8s_prepared::@3 - //SEG116 [67] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 + //SEG116 [67] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG117 [68] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 - //SEG118 [69] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 -- vbuaa=vbuaa_minus_vbuyy + //SEG117 [68] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 -- vbuaa=vbuaa_minus_vbuyy sty $ff sec sbc $ff - //SEG119 [70] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa + //SEG118 [69] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG120 [71] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] - //SEG121 [71] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy - //SEG122 mulf8s_prepared::@1 + //SEG119 [70] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] + //SEG120 [70] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy + //SEG121 mulf8s_prepared::@1 b1: - //SEG123 [72] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsyy_ge_0_then_la1 + //SEG122 [71] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsyy_ge_0_then_la1 cpy #0 bpl b2 - //SEG124 mulf8s_prepared::@4 - //SEG125 [73] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 + //SEG123 mulf8s_prepared::@4 + //SEG124 [72] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG126 [74] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 - //SEG127 [75] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuaa=vbuaa_minus__deref_pbuc1 + //SEG125 [73] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuaa=vbuaa_minus__deref_pbuc1 sec sbc memA - //SEG128 [76] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa + //SEG126 [74] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG129 [77] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] - //SEG130 [77] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy - //SEG131 mulf8s_prepared::@2 + //SEG127 [75] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] + //SEG128 [75] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy + //SEG129 mulf8s_prepared::@2 b2: - //SEG132 mulf8s_prepared::@return - //SEG133 [78] return + //SEG130 mulf8s_prepared::@return + //SEG131 [76] return rts } -//SEG134 mulf8u_prepared +//SEG132 mulf8u_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8u_prepare(byte a) mulf8u_prepared: { .label resL = $fe .label memB = $ff .label return = 5 - //SEG135 [79] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 -- _deref_pbuc1=vbuyy + //SEG133 [77] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 -- _deref_pbuc1=vbuyy sty memB - //SEG136 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } + //SEG134 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } ldx memB sec sm1: @@ -4860,65 +4816,65 @@ mulf8u_prepared: { sm4: sbc mulf_sqr2_hi,x sta memB - //SEG137 [81] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG135 [79] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda resL sta return lda memB sta return+1 - //SEG138 mulf8u_prepared::@return - //SEG139 [82] return + //SEG136 mulf8u_prepared::@return + //SEG137 [80] return rts } -//SEG140 mulf8u_prepare +//SEG138 mulf8u_prepare // Prepare for fast multiply with an unsigned byte to a word result // mulf8u_prepare(byte register(A) a) mulf8u_prepare: { .label memA = $fd - //SEG141 [84] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa + //SEG139 [82] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa sta memA - //SEG142 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } + //SEG140 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } sta mulf8u_prepared.sm1+1 sta mulf8u_prepared.sm3+1 eor #$ff sta mulf8u_prepared.sm2+1 sta mulf8u_prepared.sm4+1 - //SEG143 mulf8u_prepare::@return - //SEG144 [86] return + //SEG141 mulf8u_prepare::@return + //SEG142 [84] return rts } -//SEG145 init +//SEG143 init init: { .label sprites_ptr = SCREEN+$3f8 - //SEG146 [88] call mulf_init - //SEG147 [96] phi from init to mulf_init [phi:init->mulf_init] + //SEG144 [86] call mulf_init + //SEG145 [94] phi from init to mulf_init [phi:init->mulf_init] jsr mulf_init - //SEG148 init::@3 - //SEG149 [89] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG146 init::@3 + //SEG147 [87] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 lda #$ff sta SPRITES_ENABLE - //SEG150 [90] phi from init::@3 to init::@1 [phi:init::@3->init::@1] - //SEG151 [90] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@1#0] -- vbuxx=vbuc1 + //SEG148 [88] phi from init::@3 to init::@1 [phi:init::@3->init::@1] + //SEG149 [88] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG152 [90] phi from init::@1 to init::@1 [phi:init::@1->init::@1] - //SEG153 [90] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy - //SEG154 init::@1 + //SEG150 [88] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG151 [88] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG152 init::@1 b1: - //SEG155 [91] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG153 [89] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuc1_derefidx_vbuxx=vbuc2 lda #$ff&SPRITE/$40 sta sprites_ptr,x - //SEG156 [92] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG154 [90] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #GREEN sta SPRITES_COLS,x - //SEG157 [93] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx + //SEG155 [91] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG158 [94] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG156 [92] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1 - //SEG159 init::@return - //SEG160 [95] return + //SEG157 init::@return + //SEG158 [93] return rts } -//SEG161 mulf_init +//SEG159 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label sqr1_hi = 7 @@ -4928,70 +4884,70 @@ mulf_init: { .label sqr2_hi = 7 .label sqr2_lo = 5 .label dir = 2 - //SEG162 [97] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] - //SEG163 [97] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG160 [95] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG161 [95] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG164 [97] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG162 [95] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG165 [97] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG163 [95] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG166 [97] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG164 [95] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #<0 sta sqr sta sqr+1 - //SEG167 [97] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 + //SEG165 [95] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 tax - //SEG168 [97] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] - //SEG169 [97] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG170 [97] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG171 [97] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG172 [97] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG173 [97] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy - //SEG174 mulf_init::@1 + //SEG166 [95] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG167 [95] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG168 [95] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG169 [95] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG170 [95] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG171 [95] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG172 mulf_init::@1 b1: - //SEG175 [98] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG173 [96] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG176 [99] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG174 [97] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG177 [100] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 + //SEG175 [98] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 cmp #0 bne b2 - //SEG178 mulf_init::@5 - //SEG179 [101] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG176 mulf_init::@5 + //SEG177 [99] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG180 [102] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG178 [100] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG181 [103] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] - //SEG182 [103] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy - //SEG183 [103] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy - //SEG184 mulf_init::@2 + //SEG179 [101] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG180 [101] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy + //SEG181 [101] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy + //SEG182 mulf_init::@2 b2: - //SEG185 [104] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG183 [102] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG186 [105] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa + //SEG184 [103] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG187 [106] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG185 [104] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG188 [107] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa + //SEG186 [105] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa sta (sqr1_hi),y - //SEG189 [108] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG187 [106] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG190 [109] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG188 [107] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -4999,94 +4955,94 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG191 [110] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG189 [108] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG192 [111] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG190 [109] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1 lda sqr1_lo cmp #mulf_init::@3] - //SEG194 [112] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 + //SEG191 [110] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] + //SEG192 [110] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG195 [112] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 + //SEG193 [110] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG196 [112] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 + //SEG194 [110] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG197 [112] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 + //SEG195 [110] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 ldx #-1 - //SEG198 [112] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] - //SEG199 [112] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy - //SEG200 [112] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy - //SEG201 [112] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy - //SEG202 [112] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy - //SEG203 mulf_init::@3 + //SEG196 [110] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG197 [110] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG198 [110] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG199 [110] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG200 [110] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG201 mulf_init::@3 b3: - //SEG204 [113] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG202 [111] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG205 [114] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG203 [112] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_hi,x sta (sqr2_hi),y - //SEG206 [115] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG204 [113] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG207 [116] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG205 [114] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - //SEG208 [117] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 + //SEG206 [115] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 cpx #0 bne b4 - //SEG209 [118] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] - //SEG210 [118] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG207 [116] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG208 [116] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 lda #1 sta dir - //SEG211 mulf_init::@4 + //SEG209 mulf_init::@4 b4: - //SEG212 [119] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG210 [117] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG213 [120] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 + //SEG211 [118] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b3 lda sqr2_lo cmp #mulf_init::@12] - //SEG220 mulf_init::@12 - //SEG221 [118] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] - //SEG222 [118] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG217 [122] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] + //SEG218 mulf_init::@12 + //SEG219 [116] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG220 [116] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy } // mulf_sqr tables will contain f(x)=int(x*x/4) and g(x) = f(x-255). // =(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 to:mul16s::@3 mul16s::@3: scope:[mul16s] from mul16s::@6 - [123] (word~) mul16s::$5 ← > (dword) mul16s::m#0 - [124] (word~) mul16s::$6 ← > (dword) mul16s::m#0 - [125] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 - [126] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 + [123] (word~) mul16s::$6 ← > (dword) mul16s::m#0 + [124] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 + [125] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 to:mul16s::@1 mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@6 - [127] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) + [126] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) to:mul16s::@2 mul16s::@2: scope:[mul16s] from mul16s::@1 - [128] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 + [127] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 to:mul16s::@return mul16s::@return: scope:[mul16s] from mul16s::@2 - [129] return + [128] return to:@return mul16u: scope:[mul16u] from mul16s mulu16_sel - [130] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 ) - [130] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) - [131] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 + [129] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 ) + [129] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) + [130] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@4 - [132] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) - [132] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) - [132] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) - [133] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 + [131] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) + [131] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) + [131] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) + [132] 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 - [134] return + [133] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [135] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [136] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 + [134] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [135] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 to:mul16u::@7 mul16u::@7: scope:[mul16u] from mul16u::@2 - [137] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [136] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7 - [138] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) - [139] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [140] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [137] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) + [138] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [139] (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 - [141] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 + [140] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 to:sin16s::@4 sin16s::@4: scope:[sin16s] from sin16s - [142] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 + [141] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 to:sin16s::@1 sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 - [143] (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 ) - [143] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) - [144] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 + [142] (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 ) + [142] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) + [143] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 to:sin16s::@5 sin16s::@5: scope:[sin16s] from sin16s::@1 - [145] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 + [144] (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 - [146] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) - [147] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 - [148] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 - [149] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 - [150] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 - [151] call mulu16_sel - [152] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + [145] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) + [146] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 + [147] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 + [148] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 + [149] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 + [150] call mulu16_sel + [151] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 to:sin16s::@8 sin16s::@8: scope:[sin16s] from sin16s::@2 - [153] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 - [154] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - [155] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 - [156] call mulu16_sel - [157] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 + [152] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 + [153] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + [154] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 + [155] call mulu16_sel + [156] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 to:sin16s::@9 sin16s::@9: scope:[sin16s] from sin16s::@8 - [158] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - [159] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - [160] call mulu16_sel - [161] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + [157] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + [158] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + [159] call mulu16_sel + [160] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 to:sin16s::@10 sin16s::@10: scope:[sin16s] from sin16s::@9 - [162] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - [163] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 - [164] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - [165] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 - [166] call mulu16_sel - [167] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 + [161] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + [162] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 + [163] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + [164] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 + [165] call mulu16_sel + [166] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 to:sin16s::@11 sin16s::@11: scope:[sin16s] from sin16s::@10 - [168] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - [169] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - [170] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 - [171] call mulu16_sel - [172] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + [167] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + [168] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + [169] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 + [170] call mulu16_sel + [171] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 to:sin16s::@12 sin16s::@12: scope:[sin16s] from sin16s::@11 - [173] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - [174] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [175] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 - [176] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 + [172] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + [173] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [174] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 + [175] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 to:sin16s::@6 sin16s::@6: scope:[sin16s] from sin16s::@12 - [177] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 + [176] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 to:sin16s::@3 sin16s::@3: scope:[sin16s] from sin16s::@15 sin16s::@6 - [178] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) + [177] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) to:sin16s::@return sin16s::@return: scope:[sin16s] from sin16s::@3 - [179] return + [178] return to:@return sin16s::@15: scope:[sin16s] from sin16s::@12 - [180] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + [179] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 to:sin16s::@3 mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9 - [181] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [181] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) - [181] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 ) - [182] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 - [183] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - [184] call mul16u - [185] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + [180] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [180] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) + [180] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 ) + [181] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 + [182] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + [183] call mul16u + [184] (dword) mul16u::return#3 ← (dword) mul16u::res#2 to:mulu16_sel::@2 mulu16_sel::@2: scope:[mulu16_sel] from mulu16_sel - [186] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - [187] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 - [188] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 + [185] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + [186] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 + [187] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 to:mulu16_sel::@return mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2 - [189] return + [188] return to:@return div32u16u: scope:[div32u16u] from sin16s_gen2 - [190] phi() - [191] call divr16u - [192] (word) divr16u::return#2 ← (word) divr16u::return#0 + [189] phi() + [190] call divr16u + [191] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div32u16u::@2 div32u16u::@2: scope:[div32u16u] from div32u16u - [193] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 - [194] (word) divr16u::rem#4 ← (word) rem16u#1 - [195] call divr16u - [196] (word) divr16u::return#3 ← (word) divr16u::return#0 + [192] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 + [193] (word) divr16u::rem#4 ← (word) rem16u#1 + [194] call divr16u + [195] (word) divr16u::return#3 ← (word) divr16u::return#0 to:div32u16u::@3 div32u16u::@3: scope:[div32u16u] from div32u16u::@2 - [197] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - [198] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 + [196] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + [197] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 to:div32u16u::@return div32u16u::@return: scope:[div32u16u] from div32u16u::@3 - [199] return + [198] return to:@return divr16u: scope:[divr16u] from div32u16u div32u16u::@2 - [200] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) - [200] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) + [199] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) + [199] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [201] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) - [201] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) - [201] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [201] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) - [202] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [203] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [204] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 - [205] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 + [200] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) + [200] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) + [200] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [200] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) + [201] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [202] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [203] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 + [204] 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 - [206] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 + [205] (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 - [207] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [208] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [209] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [210] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 + [206] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [207] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [208] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [209] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [211] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [212] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 + [210] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [211] (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 - [213] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [213] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [214] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [215] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 + [212] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [212] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [213] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [214] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [216] (word) rem16u#1 ← (word) divr16u::rem#11 + [215] (word) rem16u#1 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [217] return + [216] return to:@return fill: scope:[fill] from main::@3 main::@4 - [218] (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 ) - [218] (byte*) fill::addr#0 ← phi( main::@3/(const byte*) SCREEN#0 main::@4/(const byte*) COLS#0 ) - [219] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 + [217] (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 ) + [217] (byte*) fill::addr#0 ← phi( main::@3/(const byte*) SCREEN#0 main::@4/(const byte*) COLS#0 ) + [218] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 to:fill::@1 fill::@1: scope:[fill] from fill fill::@1 - [220] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) - [221] *((byte*) fill::addr#2) ← (byte) fill::val#3 - [222] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 - [223] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 + [219] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) + [220] *((byte*) fill::addr#2) ← (byte) fill::val#3 + [221] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 + [222] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 to:fill::@return fill::@return: scope:[fill] from fill::@1 - [224] return + [223] return to:@return diff --git a/src/test/ref/examples/scrolllogo/scrolllogo.log b/src/test/ref/examples/scrolllogo/scrolllogo.log index 8facc7628..719a3ec01 100644 --- a/src/test/ref/examples/scrolllogo/scrolllogo.log +++ b/src/test/ref/examples/scrolllogo/scrolllogo.log @@ -296,7 +296,6 @@ mul16s::@3: scope:[mul16s] from mul16s::@6 (signed word) mul16s::a#5 ← phi( mul16s::@6/(signed word) mul16s::a#2 ) (signed word) mul16s::b#3 ← phi( mul16s::@6/(signed word) mul16s::b#4 ) (dword) mul16s::m#3 ← phi( mul16s::@6/(dword) mul16s::m#0 ) - (word~) mul16s::$5 ← > (dword) mul16s::m#3 (word~) mul16s::$6 ← > (dword) mul16s::m#3 (word~) mul16s::$7 ← ((word)) (signed word) mul16s::b#3 (word~) mul16s::$8 ← (word~) mul16s::$6 - (word~) mul16s::$7 @@ -311,7 +310,6 @@ mul16s::@2: scope:[mul16s] from mul16s::@1 mul16s::@4 mul16s::@4: scope:[mul16s] from mul16s::@1 (signed word) mul16s::a#3 ← phi( mul16s::@1/(signed word) mul16s::a#4 ) (dword) mul16s::m#5 ← phi( mul16s::@1/(dword) mul16s::m#6 ) - (word~) mul16s::$11 ← > (dword) mul16s::m#5 (word~) mul16s::$12 ← > (dword) mul16s::m#5 (word~) mul16s::$13 ← ((word)) (signed word) mul16s::a#3 (word~) mul16s::$14 ← (word~) mul16s::$12 - (word~) mul16s::$13 @@ -1376,7 +1374,6 @@ SYMBOL TABLE SSA (word~) mul16s::$0 (word~) mul16s::$1 (bool~) mul16s::$10 -(word~) mul16s::$11 (word~) mul16s::$12 (word~) mul16s::$13 (word~) mul16s::$14 @@ -1386,7 +1383,6 @@ SYMBOL TABLE SSA (dword~) mul16s::$2 (bool~) mul16s::$3 (bool~) mul16s::$4 -(word~) mul16s::$5 (word~) mul16s::$6 (word~) mul16s::$7 (word~) mul16s::$8 @@ -1873,10 +1869,10 @@ Inversing boolean not [98] (bool~) divr16u::$9 ← (word) divr16u::rem#6 < (word Inversing boolean not [158] (bool~) mul16u::$3 ← (byte/word~) mul16u::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [157] (bool~) mul16u::$2 ← (byte/word~) mul16u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not [184] (bool~) mul16s::$4 ← (signed word) mul16s::a#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [183] (bool~) mul16s::$3 ← (signed word) mul16s::a#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not [188] (bool~) mul16s::$10 ← (signed word) mul16s::b#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [187] (bool~) mul16s::$9 ← (signed word) mul16s::b#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [262] (bool~) sin16s::$1 ← (dword) sin16s::x#3 < (dword) PI_u4f28#0 from [261] (bool~) sin16s::$0 ← (dword) sin16s::x#3 >= (dword) PI_u4f28#0 -Inversing boolean not [266] (bool~) sin16s::$4 ← (dword) sin16s::x#4 < (dword) PI_HALF_u4f28#0 from [265] (bool~) sin16s::$3 ← (dword) sin16s::x#4 >= (dword) PI_HALF_u4f28#0 -Inversing boolean not [326] (bool~) sin16s::$19 ← (byte) sin16s::isUpper#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [325] (bool~) sin16s::$18 ← (byte) sin16s::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [449] (bool~) loop::$5 ← (word) xsin_idx#3 != (word/signed dword/dword~) loop::$3 from [448] (bool~) loop::$4 ← (word) xsin_idx#3 == (word/signed dword/dword~) loop::$3 +Inversing boolean not [260] (bool~) sin16s::$1 ← (dword) sin16s::x#3 < (dword) PI_u4f28#0 from [259] (bool~) sin16s::$0 ← (dword) sin16s::x#3 >= (dword) PI_u4f28#0 +Inversing boolean not [264] (bool~) sin16s::$4 ← (dword) sin16s::x#4 < (dword) PI_HALF_u4f28#0 from [263] (bool~) sin16s::$3 ← (dword) sin16s::x#4 >= (dword) PI_HALF_u4f28#0 +Inversing boolean not [324] (bool~) sin16s::$19 ← (byte) sin16s::isUpper#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [323] (bool~) sin16s::$18 ← (byte) sin16s::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [447] (bool~) loop::$5 ← (word) xsin_idx#3 != (word/signed dword/dword~) loop::$3 from [446] (bool~) loop::$4 ← (word) xsin_idx#3 == (word/signed dword/dword~) loop::$3 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 @@ -2115,23 +2111,23 @@ Simple Condition (bool~) mul16u::$0 [154] if((word) mul16u::a#3!=(byte/signed by Simple Condition (bool~) mul16u::$3 [159] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 Simple Condition (bool~) mul16s::$4 [185] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 Simple Condition (bool~) mul16s::$10 [189] 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 [255] if((word) sin16s_gen2::i#1<(word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@1 -Simple Condition (bool~) sin16s::$1 [263] if((dword) sin16s::x#0<(dword) PI_u4f28#0) goto sin16s::@1 -Simple Condition (bool~) sin16s::$4 [267] if((dword) sin16s::x#4<(dword) PI_HALF_u4f28#0) goto sin16s::@2 -Simple Condition (bool~) sin16s::$19 [327] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@3 -Simple Condition (bool~) fill::$1 [361] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -Simple Condition (bool~) main::$4 [412] if((byte) main::ch#1!=rangelast(0,239)) goto main::@1 -Simple Condition (bool~) loop::$0 [437] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@5 -Simple Condition (bool~) loop::$5 [450] if((word) xsin_idx#3!=(word/signed dword/dword~) loop::$3) goto loop::@7 -Simple Condition (bool~) render_logo::$5 [468] 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 [480] if((byte) render_logo::screen_idx#17!=(byte) render_logo::logo_start#1) goto render_logo::@3 -Simple Condition (bool~) render_logo::$10 [491] unroll if((byte) render_logo::line#2!=rangelast(0,5)) goto render_logo::@5 -Simple Condition (bool~) render_logo::$11 [496] if((byte) render_logo::screen_idx#19!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@7 -Simple Condition (bool~) render_logo::$16 [507] unroll if((byte) render_logo::line#4!=rangelast(0,5)) goto render_logo::@9 -Simple Condition (bool~) render_logo::$19 [513] if((byte) render_logo::logo_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@12 -Simple Condition (bool~) render_logo::$24 [524] unroll if((byte) render_logo::line#6!=rangelast(0,5)) goto render_logo::@14 -Simple Condition (bool~) render_logo::$25 [530] if((byte) render_logo::screen_idx#14!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@16 -Simple Condition (bool~) render_logo::$28 [539] unroll if((byte) render_logo::line#8!=rangelast(0,5)) goto render_logo::@18 +Simple Condition (bool~) sin16s_gen2::$11 [253] if((word) sin16s_gen2::i#1<(word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@1 +Simple Condition (bool~) sin16s::$1 [261] if((dword) sin16s::x#0<(dword) PI_u4f28#0) goto sin16s::@1 +Simple Condition (bool~) sin16s::$4 [265] if((dword) sin16s::x#4<(dword) PI_HALF_u4f28#0) goto sin16s::@2 +Simple Condition (bool~) sin16s::$19 [325] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@3 +Simple Condition (bool~) fill::$1 [359] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 +Simple Condition (bool~) main::$4 [410] if((byte) main::ch#1!=rangelast(0,239)) goto main::@1 +Simple Condition (bool~) loop::$0 [435] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@5 +Simple Condition (bool~) loop::$5 [448] if((word) xsin_idx#3!=(word/signed dword/dword~) loop::$3) goto loop::@7 +Simple Condition (bool~) render_logo::$5 [466] 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 [478] if((byte) render_logo::screen_idx#17!=(byte) render_logo::logo_start#1) goto render_logo::@3 +Simple Condition (bool~) render_logo::$10 [489] unroll if((byte) render_logo::line#2!=rangelast(0,5)) goto render_logo::@5 +Simple Condition (bool~) render_logo::$11 [494] if((byte) render_logo::screen_idx#19!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@7 +Simple Condition (bool~) render_logo::$16 [505] unroll if((byte) render_logo::line#4!=rangelast(0,5)) goto render_logo::@9 +Simple Condition (bool~) render_logo::$19 [511] if((byte) render_logo::logo_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@12 +Simple Condition (bool~) render_logo::$24 [522] unroll if((byte) render_logo::line#6!=rangelast(0,5)) goto render_logo::@14 +Simple Condition (bool~) render_logo::$25 [528] if((byte) render_logo::screen_idx#14!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@16 +Simple Condition (bool~) render_logo::$28 [537] unroll if((byte) render_logo::line#8!=rangelast(0,5)) goto render_logo::@18 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 @@ -2295,7 +2291,7 @@ Successful SSA optimization Pass2ConstantIdentification Constant (const byte) main::toD0181_return#0 = main::toD0181_$3#0|main::toD0181_$7#0 Successful SSA optimization Pass2ConstantIdentification if() condition always true - replacing block destination [44] if((const signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 -if() condition always true - replacing block destination [152] if(true) goto loop::@2 +if() condition always true - replacing block destination [150] if(true) goto loop::@2 Successful SSA optimization Pass2ConstantIfs Fixing inline constructor with div32u16u::$4 ← div32u16u::quotient_hi#0 dw= div32u16u::quotient_lo#0 Successful SSA optimization Pass2FixInlineConstructors @@ -2308,7 +2304,6 @@ Eliminating Noop Cast (signed word~) sin16s::$20 ← ((signed word)) (word) sin1 Eliminating Noop Cast (byte) render_logo::logo_idx#0 ← ((byte)) (signed byte~) render_logo::$17 Eliminating Noop Cast (byte) render_logo::logo_start#0 ← ((byte)) (signed byte) render_logo::x_char#0 Successful SSA optimization Pass2NopCastElimination -Eliminating variable (word~) mul16s::$11 from unused block mul16s::@4 Eliminating variable (word~) mul16s::$12 from unused block mul16s::@4 Eliminating variable (word~) mul16s::$17 from unused block mul16s::@4 Eliminating variable (dword) mul16s::m#2 from unused block mul16s::@4 @@ -2374,7 +2369,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 [162] if((const byte) render_logo::line#2!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@5_1 +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::@5_1 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: render_logo::@9 tails: render_logo::@9 blocks: render_logo::@9 Successful SSA optimization Pass2LoopUnroll @@ -2961,9 +2956,9 @@ 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:110 sin16s:115 mul16s:118 Calls in [mul16s] to mul16u:133 -Calls in [sin16s] to mulu16_sel:178 mulu16_sel:185 mulu16_sel:190 mulu16_sel:198 mulu16_sel:205 -Calls in [mulu16_sel] to mul16u:223 -Calls in [div32u16u] to divr16u:230 divr16u:235 +Calls in [sin16s] to mulu16_sel:177 mulu16_sel:184 mulu16_sel:189 mulu16_sel:197 mulu16_sel:204 +Calls in [mulu16_sel] to mul16u:222 +Calls in [div32u16u] to divr16u:229 divr16u:234 Created 38 initial phi equivalence classes Coalesced [25] main::ch#3 ← main::ch#1 @@ -2980,46 +2975,46 @@ Coalesced [108] render_logo::screen_idx#26 ← render_logo::screen_idx#4 Coalesced [129] sin16s_gen2::x#5 ← sin16s_gen2::x#1 Coalesced [130] sin16s_gen2::sintab#7 ← sin16s_gen2::sintab#0 Coalesced [131] sin16s_gen2::i#5 ← sin16s_gen2::i#1 -Coalesced [141] mul16s::m#7 ← mul16s::m#1 -Coalesced [145] mul16s::m#8 ← mul16s::m#0 -Coalesced [148] mul16u::a#10 ← mul16u::a#6 -Coalesced [149] mul16u::mb#6 ← mul16u::mb#0 -Coalesced [156] mul16u::res#9 ← mul16u::res#1 -Coalesced [160] mul16u::a#11 ← mul16u::a#0 -Coalesced [161] mul16u::res#7 ← mul16u::res#6 -Coalesced [162] mul16u::mb#7 ← mul16u::mb#1 -Coalesced (already) [163] mul16u::res#8 ← mul16u::res#2 -Coalesced [166] sin16s::x#9 ← sin16s::x#1 -Coalesced [170] sin16s::x#11 ← sin16s::x#2 -Coalesced [176] mulu16_sel::v1#8 ← mulu16_sel::v1#0 -Coalesced [177] mulu16_sel::v2#8 ← mulu16_sel::v2#0 -Coalesced [183] mulu16_sel::v1#9 ← mulu16_sel::v1#1 -Coalesced [184] mulu16_sel::v2#9 ← mulu16_sel::v2#1 -Coalesced [189] mulu16_sel::v1#10 ← mulu16_sel::v1#2 -Coalesced [196] mulu16_sel::v1#6 ← mulu16_sel::v1#3 -Coalesced [197] mulu16_sel::v2#6 ← mulu16_sel::v2#3 -Coalesced [203] mulu16_sel::v1#7 ← mulu16_sel::v1#4 -Coalesced [204] mulu16_sel::v2#7 ← mulu16_sel::v2#4 -Coalesced [212] sin16s::return#6 ← sin16s::sinx#1 -Coalesced [216] sin16s::x#10 ← sin16s::x#4 -Coalesced [217] sin16s::x#8 ← sin16s::x#0 -Coalesced [221] mul16u::b#3 ← mul16u::b#1 -Coalesced [222] mul16u::a#9 ← mul16u::a#2 -Coalesced [234] divr16u::rem#12 ← divr16u::rem#4 -Coalesced [241] divr16u::rem#13 ← divr16u::rem#10 -Coalesced [242] divr16u::dividend#9 ← divr16u::dividend#5 -Coalesced [249] divr16u::rem#16 ← divr16u::rem#1 -Coalesced [256] divr16u::rem#18 ← divr16u::rem#2 -Coalesced [257] divr16u::return#8 ← divr16u::quotient#2 -Coalesced [263] divr16u::rem#14 ← divr16u::rem#11 -Coalesced [264] divr16u::dividend#10 ← divr16u::dividend#0 -Coalesced [265] divr16u::quotient#9 ← divr16u::return#0 -Coalesced [266] divr16u::i#7 ← divr16u::i#1 -Coalesced [267] divr16u::rem#17 ← divr16u::rem#6 -Coalesced [268] divr16u::return#7 ← divr16u::quotient#1 -Coalesced [269] divr16u::rem#15 ← divr16u::rem#0 -Coalesced [272] fill::addr#3 ← fill::addr#0 -Coalesced [278] fill::addr#4 ← fill::addr#1 +Coalesced [140] mul16s::m#7 ← mul16s::m#1 +Coalesced [144] mul16s::m#8 ← mul16s::m#0 +Coalesced [147] mul16u::a#10 ← mul16u::a#6 +Coalesced [148] mul16u::mb#6 ← mul16u::mb#0 +Coalesced [155] mul16u::res#9 ← mul16u::res#1 +Coalesced [159] mul16u::a#11 ← mul16u::a#0 +Coalesced [160] mul16u::res#7 ← mul16u::res#6 +Coalesced [161] mul16u::mb#7 ← mul16u::mb#1 +Coalesced (already) [162] mul16u::res#8 ← mul16u::res#2 +Coalesced [165] sin16s::x#9 ← sin16s::x#1 +Coalesced [169] sin16s::x#11 ← sin16s::x#2 +Coalesced [175] mulu16_sel::v1#8 ← mulu16_sel::v1#0 +Coalesced [176] mulu16_sel::v2#8 ← mulu16_sel::v2#0 +Coalesced [182] mulu16_sel::v1#9 ← mulu16_sel::v1#1 +Coalesced [183] mulu16_sel::v2#9 ← mulu16_sel::v2#1 +Coalesced [188] mulu16_sel::v1#10 ← mulu16_sel::v1#2 +Coalesced [195] mulu16_sel::v1#6 ← mulu16_sel::v1#3 +Coalesced [196] mulu16_sel::v2#6 ← mulu16_sel::v2#3 +Coalesced [202] mulu16_sel::v1#7 ← mulu16_sel::v1#4 +Coalesced [203] mulu16_sel::v2#7 ← mulu16_sel::v2#4 +Coalesced [211] sin16s::return#6 ← sin16s::sinx#1 +Coalesced [215] sin16s::x#10 ← sin16s::x#4 +Coalesced [216] sin16s::x#8 ← sin16s::x#0 +Coalesced [220] mul16u::b#3 ← mul16u::b#1 +Coalesced [221] mul16u::a#9 ← mul16u::a#2 +Coalesced [233] divr16u::rem#12 ← divr16u::rem#4 +Coalesced [240] divr16u::rem#13 ← divr16u::rem#10 +Coalesced [241] divr16u::dividend#9 ← divr16u::dividend#5 +Coalesced [248] divr16u::rem#16 ← divr16u::rem#1 +Coalesced [255] divr16u::rem#18 ← divr16u::rem#2 +Coalesced [256] divr16u::return#8 ← divr16u::quotient#2 +Coalesced [262] divr16u::rem#14 ← divr16u::rem#11 +Coalesced [263] divr16u::dividend#10 ← divr16u::dividend#0 +Coalesced [264] divr16u::quotient#9 ← divr16u::return#0 +Coalesced [265] divr16u::i#7 ← divr16u::i#1 +Coalesced [266] divr16u::rem#17 ← divr16u::rem#6 +Coalesced [267] divr16u::return#7 ← divr16u::quotient#1 +Coalesced [268] divr16u::rem#15 ← divr16u::rem#0 +Coalesced [271] fill::addr#3 ← fill::addr#0 +Coalesced [277] fill::addr#4 ← fill::addr#1 Coalesced down to 26 phi equivalence classes Culled Empty Block (label) main::@8 Culled Empty Block (label) loop::@13 @@ -3303,202 +3298,201 @@ mul16s::@6: scope:[mul16s] from mul16s [122] 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::@6 - [123] (word~) mul16s::$5 ← > (dword) mul16s::m#0 - [124] (word~) mul16s::$6 ← > (dword) mul16s::m#0 - [125] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 - [126] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 + [123] (word~) mul16s::$6 ← > (dword) mul16s::m#0 + [124] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 + [125] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 to:mul16s::@1 mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@6 - [127] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) + [126] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) to:mul16s::@2 mul16s::@2: scope:[mul16s] from mul16s::@1 - [128] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 + [127] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 to:mul16s::@return mul16s::@return: scope:[mul16s] from mul16s::@2 - [129] return + [128] return to:@return mul16u: scope:[mul16u] from mul16s mulu16_sel - [130] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 ) - [130] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) - [131] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 + [129] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 ) + [129] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) + [130] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@4 - [132] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) - [132] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) - [132] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) - [133] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 + [131] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) + [131] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) + [131] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) + [132] 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 - [134] return + [133] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [135] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [136] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 + [134] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [135] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 to:mul16u::@7 mul16u::@7: scope:[mul16u] from mul16u::@2 - [137] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [136] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7 - [138] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) - [139] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [140] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [137] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) + [138] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [139] (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 - [141] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 + [140] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 to:sin16s::@4 sin16s::@4: scope:[sin16s] from sin16s - [142] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 + [141] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 to:sin16s::@1 sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 - [143] (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 ) - [143] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) - [144] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 + [142] (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 ) + [142] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) + [143] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 to:sin16s::@5 sin16s::@5: scope:[sin16s] from sin16s::@1 - [145] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 + [144] (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 - [146] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) - [147] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 - [148] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 - [149] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 - [150] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 - [151] call mulu16_sel - [152] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + [145] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) + [146] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 + [147] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 + [148] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 + [149] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 + [150] call mulu16_sel + [151] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 to:sin16s::@8 sin16s::@8: scope:[sin16s] from sin16s::@2 - [153] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 - [154] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - [155] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 - [156] call mulu16_sel - [157] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 + [152] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 + [153] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + [154] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 + [155] call mulu16_sel + [156] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 to:sin16s::@9 sin16s::@9: scope:[sin16s] from sin16s::@8 - [158] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - [159] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - [160] call mulu16_sel - [161] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + [157] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + [158] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + [159] call mulu16_sel + [160] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 to:sin16s::@10 sin16s::@10: scope:[sin16s] from sin16s::@9 - [162] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - [163] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 - [164] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - [165] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 - [166] call mulu16_sel - [167] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 + [161] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + [162] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 + [163] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + [164] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 + [165] call mulu16_sel + [166] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 to:sin16s::@11 sin16s::@11: scope:[sin16s] from sin16s::@10 - [168] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - [169] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - [170] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 - [171] call mulu16_sel - [172] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + [167] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + [168] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + [169] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 + [170] call mulu16_sel + [171] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 to:sin16s::@12 sin16s::@12: scope:[sin16s] from sin16s::@11 - [173] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - [174] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [175] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 - [176] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 + [172] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + [173] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [174] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 + [175] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 to:sin16s::@6 sin16s::@6: scope:[sin16s] from sin16s::@12 - [177] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 + [176] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 to:sin16s::@3 sin16s::@3: scope:[sin16s] from sin16s::@15 sin16s::@6 - [178] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) + [177] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) to:sin16s::@return sin16s::@return: scope:[sin16s] from sin16s::@3 - [179] return + [178] return to:@return sin16s::@15: scope:[sin16s] from sin16s::@12 - [180] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + [179] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 to:sin16s::@3 mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9 - [181] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [181] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) - [181] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 ) - [182] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 - [183] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - [184] call mul16u - [185] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + [180] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [180] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) + [180] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 ) + [181] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 + [182] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + [183] call mul16u + [184] (dword) mul16u::return#3 ← (dword) mul16u::res#2 to:mulu16_sel::@2 mulu16_sel::@2: scope:[mulu16_sel] from mulu16_sel - [186] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - [187] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 - [188] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 + [185] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + [186] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 + [187] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 to:mulu16_sel::@return mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2 - [189] return + [188] return to:@return div32u16u: scope:[div32u16u] from sin16s_gen2 - [190] phi() - [191] call divr16u - [192] (word) divr16u::return#2 ← (word) divr16u::return#0 + [189] phi() + [190] call divr16u + [191] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div32u16u::@2 div32u16u::@2: scope:[div32u16u] from div32u16u - [193] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 - [194] (word) divr16u::rem#4 ← (word) rem16u#1 - [195] call divr16u - [196] (word) divr16u::return#3 ← (word) divr16u::return#0 + [192] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 + [193] (word) divr16u::rem#4 ← (word) rem16u#1 + [194] call divr16u + [195] (word) divr16u::return#3 ← (word) divr16u::return#0 to:div32u16u::@3 div32u16u::@3: scope:[div32u16u] from div32u16u::@2 - [197] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - [198] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 + [196] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + [197] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 to:div32u16u::@return div32u16u::@return: scope:[div32u16u] from div32u16u::@3 - [199] return + [198] return to:@return divr16u: scope:[divr16u] from div32u16u div32u16u::@2 - [200] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) - [200] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) + [199] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) + [199] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [201] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) - [201] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) - [201] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [201] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) - [202] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [203] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [204] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 - [205] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 + [200] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) + [200] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) + [200] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [200] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) + [201] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [202] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [203] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 + [204] 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 - [206] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 + [205] (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 - [207] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [208] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [209] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [210] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 + [206] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [207] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [208] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [209] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [211] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [212] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 + [210] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [211] (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 - [213] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [213] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [214] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [215] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 + [212] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [212] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [213] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [214] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [216] (word) rem16u#1 ← (word) divr16u::rem#11 + [215] (word) rem16u#1 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [217] return + [216] return to:@return fill: scope:[fill] from main::@3 main::@4 - [218] (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 ) - [218] (byte*) fill::addr#0 ← phi( main::@3/(const byte*) SCREEN#0 main::@4/(const byte*) COLS#0 ) - [219] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 + [217] (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 ) + [217] (byte*) fill::addr#0 ← phi( main::@3/(const byte*) SCREEN#0 main::@4/(const byte*) COLS#0 ) + [218] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 to:fill::@1 fill::@1: scope:[fill] from fill fill::@1 - [220] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) - [221] *((byte*) fill::addr#2) ← (byte) fill::val#3 - [222] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 - [223] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 + [219] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) + [220] *((byte*) fill::addr#2) ← (byte) fill::val#3 + [221] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 + [222] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 to:fill::@return fill::@return: scope:[fill] from fill::@1 - [224] return + [223] return to:@return @@ -3663,7 +3657,6 @@ VARIABLE REGISTER WEIGHTS (byte*) main::toD0181_screen (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) (word~) mul16s::$16 4.0 -(word~) mul16s::$5 20.0 (word~) mul16s::$6 4.0 (signed word) mul16s::a (signed word) mul16s::a#0 2.6 @@ -3882,7 +3875,6 @@ Added variable sin16s_gen2::$5 to zero page equivalence class [ sin16s_gen2::$5 Added variable sin16s_gen2::$6 to zero page equivalence class [ sin16s_gen2::$6 ] Added variable sin16s_gen2::$8 to zero page equivalence class [ sin16s_gen2::$8 ] Added variable mul16u::return#2 to zero page equivalence class [ mul16u::return#2 ] -Added variable mul16s::$5 to zero page equivalence class [ mul16s::$5 ] Added variable mul16s::$6 to zero page equivalence class [ mul16s::$6 ] Added variable mul16s::$16 to zero page equivalence class [ mul16s::$16 ] Added variable mul16s::return#0 to zero page equivalence class [ mul16s::return#0 ] @@ -3972,7 +3964,6 @@ Complete equivalence classes [ sin16s_gen2::$6 ] [ sin16s_gen2::$8 ] [ mul16u::return#2 ] -[ mul16s::$5 ] [ mul16s::$6 ] [ mul16s::$16 ] [ mul16s::return#0 ] @@ -4061,39 +4052,38 @@ 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::$5 ] -Allocated zp ZP_WORD:110 [ mul16s::$6 ] -Allocated zp ZP_WORD:112 [ mul16s::$16 ] -Allocated zp ZP_DWORD:114 [ mul16s::return#0 ] -Allocated zp ZP_BYTE:118 [ mul16u::$1 ] -Allocated zp ZP_DWORD:119 [ sin16s::$6 ] -Allocated zp ZP_WORD:123 [ sin16s::x1#0 ] -Allocated zp ZP_WORD:125 [ mulu16_sel::return#0 ] -Allocated zp ZP_WORD:127 [ sin16s::x2#0 ] -Allocated zp ZP_WORD:129 [ mulu16_sel::return#1 ] -Allocated zp ZP_WORD:131 [ sin16s::x3#0 ] -Allocated zp ZP_WORD:133 [ mulu16_sel::return#2 ] -Allocated zp ZP_WORD:135 [ sin16s::x3_6#0 ] -Allocated zp ZP_WORD:137 [ sin16s::usinx#0 ] -Allocated zp ZP_WORD:139 [ mulu16_sel::return#10 ] -Allocated zp ZP_WORD:141 [ sin16s::x4#0 ] -Allocated zp ZP_WORD:143 [ mulu16_sel::return#11 ] -Allocated zp ZP_WORD:145 [ sin16s::x5#0 ] -Allocated zp ZP_WORD:147 [ sin16s::x5_128#0 ] -Allocated zp ZP_WORD:149 [ sin16s::usinx#1 ] -Allocated zp ZP_DWORD:151 [ mul16u::return#3 ] -Allocated zp ZP_DWORD:155 [ mulu16_sel::$0 ] -Allocated zp ZP_DWORD:159 [ mulu16_sel::$1 ] -Allocated zp ZP_WORD:163 [ mulu16_sel::return#12 ] -Allocated zp ZP_WORD:165 [ divr16u::return#2 ] -Allocated zp ZP_WORD:167 [ div32u16u::quotient_hi#0 ] -Allocated zp ZP_WORD:169 [ divr16u::return#3 ] -Allocated zp ZP_WORD:171 [ div32u16u::quotient_lo#0 ] -Allocated zp ZP_DWORD:173 [ div32u16u::return#0 ] -Allocated zp ZP_BYTE:177 [ divr16u::$1 ] -Allocated zp ZP_BYTE:178 [ divr16u::$2 ] -Allocated zp ZP_WORD:179 [ rem16u#1 ] -Allocated zp ZP_WORD:181 [ fill::end#0 ] +Allocated zp ZP_WORD:108 [ mul16s::$6 ] +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::$6 ] +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 @@ -4125,7 +4115,7 @@ INITIAL ASM .label SCREEN = $400 .label LOGO = $2000 .const XSIN_SIZE = $200 - .label rem16u = $b3 + .label rem16u = $b1 .label xsin_idx = 3 //SEG3 @begin bbegin: @@ -4178,12 +4168,12 @@ main: { lda #VIC_MCM sta D016 //SEG22 [13] call fill - //SEG23 [218] phi from main::@3 to fill [phi:main::@3->fill] + //SEG23 [217] phi from main::@3 to fill [phi:main::@3->fill] fill_from_b3: - //SEG24 [218] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuz1=vbuc1 + //SEG24 [217] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuz1=vbuc1 lda #BLACK sta fill.val - //SEG25 [218] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 + //SEG25 [217] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 lda #SCREEN @@ -4195,12 +4185,12 @@ main: { //SEG27 main::@4 b4: //SEG28 [15] call fill - //SEG29 [218] phi from main::@4 to fill [phi:main::@4->fill] + //SEG29 [217] phi from main::@4 to fill [phi:main::@4->fill] fill_from_b4: - //SEG30 [218] 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 [217] 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 [218] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 + //SEG31 [217] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 lda #COLS @@ -4756,7 +4746,7 @@ sin16s_gen2: { .label x = 9 .label i = $f //SEG185 [99] call div32u16u - //SEG186 [190] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG186 [189] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] div32u16u_from_sin16s_gen2: jsr div32u16u //SEG187 [100] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 -- vduz1=vduz2 @@ -4923,11 +4913,10 @@ sin16s_gen2: { // Fixes offsets introduced by using unsigned multiplication // mul16s(signed word zeropage($5a) a) mul16s: { - .label _5 = $6c - .label _6 = $6e - .label _16 = $70 + .label _6 = $6c + .label _16 = $6e .label m = $11 - .label return = $72 + .label return = $70 .label a = $5a .label return_2 = $5c //SEG218 [118] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 @@ -4936,10 +4925,10 @@ mul16s: { lda a+1 sta mul16u.a+1 //SEG219 [119] call mul16u - //SEG220 [130] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG220 [129] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //SEG221 [130] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy - //SEG222 [130] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 + //SEG221 [129] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG222 [129] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl @@ -4972,17 +4961,12 @@ mul16s: { jmp b3 //SEG227 mul16s::@3 b3: - //SEG228 [123] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 - lda m+2 - sta _5 - lda m+3 - sta _5+1 - //SEG229 [124] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG228 [123] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG230 [125] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz2_minus_vwuc1 + //SEG229 [124] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz2_minus_vwuc1 lda _6 sec sbc #sin16s_gen2.ampl sta _16+1 - //SEG231 [126] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG230 [125] (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 - //SEG232 [127] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG231 [126] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] b1_from_b3: b1_from_b6: - //SEG233 [127] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG232 [126] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy jmp b1 - //SEG234 mul16s::@1 + //SEG233 mul16s::@1 b1: jmp b2 - //SEG235 mul16s::@2 + //SEG234 mul16s::@2 b2: - //SEG236 [128] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz2 + //SEG235 [127] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz2 lda m sta return lda m+1 @@ -5015,23 +4999,23 @@ mul16s: { lda m+3 sta return+3 jmp breturn - //SEG237 mul16s::@return + //SEG236 mul16s::@return breturn: - //SEG238 [129] return + //SEG237 [128] return rts } -//SEG239 mul16u +//SEG238 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 = $76 + .label _1 = $74 .label mb = $1d .label a = $17 .label res = $19 .label return = $68 .label b = $15 - .label return_3 = $97 - //SEG240 [131] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + .label return_3 = $95 + //SEG239 [130] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -5039,44 +5023,44 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG241 [132] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG240 [131] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG242 [132] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG243 [132] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG241 [131] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG242 [131] 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 - //SEG244 [132] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG243 [131] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG245 mul16u::@1 + //SEG244 mul16u::@1 b1: - //SEG246 [133] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG245 [132] 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 - //SEG247 mul16u::@return + //SEG246 mul16u::@return breturn: - //SEG248 [134] return + //SEG247 [133] return rts - //SEG249 mul16u::@2 + //SEG248 mul16u::@2 b2: - //SEG250 [135] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vwuz2_band_vbuc1 + //SEG249 [134] (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 - //SEG251 [136] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuz1_eq_0_then_la1 + //SEG250 [135] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b4_from_b2 jmp b7 - //SEG252 mul16u::@7 + //SEG251 mul16u::@7 b7: - //SEG253 [137] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG252 [136] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -5090,52 +5074,52 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG254 [138] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG253 [137] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG255 [138] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG254 [137] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG256 mul16u::@4 + //SEG255 mul16u::@4 b4: - //SEG257 [139] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG256 [138] (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 - //SEG258 [140] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG257 [139] (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 - //SEG259 [132] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG258 [131] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //SEG260 [132] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG261 [132] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG262 [132] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG259 [131] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG260 [131] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG261 [131] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG263 sin16s +//SEG262 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 _6 = $77 + .label _6 = $75 .label x = $22 .label return = $58 - .label x1 = $7b - .label x2 = $7f - .label x3 = $83 - .label x3_6 = $87 - .label usinx = $89 - .label x4 = $8d - .label x5 = $91 - .label x5_128 = $93 - .label usinx_1 = $95 + .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 - //SEG264 [141] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG263 [140] 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 @@ -5153,9 +5137,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG265 sin16s::@4 + //SEG264 sin16s::@4 b4: - //SEG266 [142] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG265 [141] (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 - //SEG267 [143] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG266 [142] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //SEG268 [143] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG267 [142] 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 - //SEG269 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG268 [142] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG270 [143] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG269 [142] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG271 [143] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG270 [142] 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 - //SEG272 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG271 [142] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG273 sin16s::@1 + //SEG272 sin16s::@1 b1: - //SEG274 [144] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG273 [143] 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 @@ -5203,9 +5187,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG275 sin16s::@5 + //SEG274 sin16s::@5 b5: - //SEG276 [145] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG275 [144] (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 - //SEG277 [146] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG276 [145] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG278 [146] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG277 [145] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG279 sin16s::@2 + //SEG278 sin16s::@2 b2: - //SEG280 [147] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz2_rol_3 + //SEG279 [146] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz2_rol_3 lda x sta _6 lda x+1 @@ -5243,107 +5227,107 @@ sin16s: { rol _6+3 dey bne !- - //SEG281 [148] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG280 [147] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG282 [149] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG281 [148] (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 - //SEG283 [150] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG282 [149] (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 - //SEG284 [151] call mulu16_sel - //SEG285 [181] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG283 [150] call mulu16_sel + //SEG284 [180] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG286 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG285 [180] 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 - //SEG287 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG288 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG286 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG287 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG289 [152] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG288 [151] (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 b8 - //SEG290 sin16s::@8 + //SEG289 sin16s::@8 b8: - //SEG291 [153] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG290 [152] (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 - //SEG292 [154] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 -- vwuz1=vwuz2 + //SEG291 [153] (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 - //SEG293 [155] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG292 [154] (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 - //SEG294 [156] call mulu16_sel - //SEG295 [181] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG293 [155] call mulu16_sel + //SEG294 [180] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG296 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG295 [180] 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 - //SEG297 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy - //SEG298 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG296 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG297 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG299 [157] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG298 [156] (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 b9 - //SEG300 sin16s::@9 + //SEG299 sin16s::@9 b9: - //SEG301 [158] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 -- vwuz1=vwuz2 + //SEG300 [157] (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 - //SEG302 [159] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG301 [158] (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 - //SEG303 [160] call mulu16_sel - //SEG304 [181] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG302 [159] call mulu16_sel + //SEG303 [180] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG305 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG304 [180] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu16_sel.select - //SEG306 [181] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG305 [180] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG307 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG306 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG308 [161] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG307 [160] (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 b10 - //SEG309 sin16s::@10 + //SEG308 sin16s::@10 b10: - //SEG310 [162] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 -- vwuz1=vwuz2 + //SEG309 [161] (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 - //SEG311 [163] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG310 [162] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -5351,71 +5335,71 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG312 [164] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG311 [163] (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 - //SEG313 [165] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG312 [164] (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 - //SEG314 [166] call mulu16_sel - //SEG315 [181] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG313 [165] call mulu16_sel + //SEG314 [180] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG316 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG315 [180] 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 - //SEG317 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG318 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG316 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG317 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG319 [167] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG318 [166] (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 b11 - //SEG320 sin16s::@11 + //SEG319 sin16s::@11 b11: - //SEG321 [168] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 -- vwuz1=vwuz2 + //SEG320 [167] (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 - //SEG322 [169] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 -- vwuz1=vwuz2 + //SEG321 [168] (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 - //SEG323 [170] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG322 [169] (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 - //SEG324 [171] call mulu16_sel - //SEG325 [181] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG323 [170] call mulu16_sel + //SEG324 [180] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] mulu16_sel_from_b11: - //SEG326 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG325 [180] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG327 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy - //SEG328 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + //SEG326 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG327 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG329 [172] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG328 [171] (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 b12 - //SEG330 sin16s::@12 + //SEG329 sin16s::@12 b12: - //SEG331 [173] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 -- vwuz1=vwuz2 + //SEG330 [172] (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 - //SEG332 [174] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz2_ror_4 + //SEG331 [173] (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 @@ -5426,7 +5410,7 @@ sin16s: { ror x5_128 dey bne !- - //SEG333 [175] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 + //SEG332 [174] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 lda usinx clc adc x5_128 @@ -5434,14 +5418,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx_1+1 - //SEG334 [176] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 + //SEG333 [175] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b15 jmp b6 - //SEG335 sin16s::@6 + //SEG334 sin16s::@6 b6: - //SEG336 [177] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 + //SEG335 [176] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 sec lda usinx_1 eor #$ff @@ -5451,60 +5435,60 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG337 [178] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG336 [177] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] b3_from_b15: b3_from_b6: - //SEG338 [178] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG337 [177] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG339 sin16s::@3 + //SEG338 sin16s::@3 b3: jmp breturn - //SEG340 sin16s::@return + //SEG339 sin16s::@return breturn: - //SEG341 [179] return + //SEG340 [178] return rts - //SEG342 sin16s::@15 + //SEG341 sin16s::@15 b15: - //SEG343 [180] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2 + //SEG342 [179] (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_b15 } -//SEG344 mulu16_sel +//SEG343 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 = $9b - .label _1 = $9f + .label _0 = $99 + .label _1 = $9d .label v1 = $28 .label v2 = $2a - .label return = $7d - .label return_1 = $81 - .label return_2 = $85 - .label return_10 = $8b - .label return_11 = $8f + .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 = $a3 - //SEG345 [182] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + .label return_12 = $a1 + //SEG344 [181] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG346 [183] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 + //SEG345 [182] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 lda v2 sta mul16u.b lda v2+1 sta mul16u.b+1 - //SEG347 [184] call mul16u - //SEG348 [130] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG346 [183] call mul16u + //SEG347 [129] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] mul16u_from_mulu16_sel: - //SEG349 [130] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy - //SEG350 [130] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy + //SEG348 [129] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG349 [129] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - //SEG351 [185] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG350 [184] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return_3 lda mul16u.res+1 @@ -5514,9 +5498,9 @@ mulu16_sel: { lda mul16u.res+3 sta mul16u.return_3+3 jmp b2 - //SEG352 mulu16_sel::@2 + //SEG351 mulu16_sel::@2 b2: - //SEG353 [186] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 -- vduz1=vduz2 + //SEG352 [185] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 -- vduz1=vduz2 lda mul16u.return_3 sta _0 lda mul16u.return_3+1 @@ -5525,7 +5509,7 @@ mulu16_sel: { sta _0+2 lda mul16u.return_3+3 sta _0+3 - //SEG354 [187] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3 + //SEG353 [186] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3 lda _0 sta _1 lda _0+1 @@ -5544,81 +5528,81 @@ mulu16_sel: { dex bne !- !e: - //SEG355 [188] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG354 [187] (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 - //SEG356 mulu16_sel::@return + //SEG355 mulu16_sel::@return breturn: - //SEG357 [189] return + //SEG356 [188] return rts } -//SEG358 div32u16u +//SEG357 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 = $a7 - .label quotient_lo = $ab - .label return = $ad + .label quotient_hi = $a5 + .label quotient_lo = $a9 + .label return = $ab .label return_2 = $50 - //SEG359 [191] call divr16u - //SEG360 [200] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG358 [190] call divr16u + //SEG359 [199] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG361 [200] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG360 [199] 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 - //SEG362 [200] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG361 [199] 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 - //SEG363 [192] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG362 [191] (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 b2 - //SEG364 div32u16u::@2 + //SEG363 div32u16u::@2 b2: - //SEG365 [193] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG364 [192] (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 - //SEG366 [194] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG365 [193] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta divr16u.rem lda rem16u+1 sta divr16u.rem+1 - //SEG367 [195] call divr16u - //SEG368 [200] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG366 [194] call divr16u + //SEG367 [199] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] divr16u_from_b2: - //SEG369 [200] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG368 [199] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG370 [200] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG369 [199] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG371 [196] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG370 [195] (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 b3 - //SEG372 div32u16u::@3 + //SEG371 div32u16u::@3 b3: - //SEG373 [197] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 + //SEG372 [196] (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 - //SEG374 [198] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG373 [197] (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 @@ -5628,84 +5612,84 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG375 div32u16u::@return + //SEG374 div32u16u::@return breturn: - //SEG376 [199] return + //SEG375 [198] return rts } -//SEG377 divr16u +//SEG376 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 = $b1 - .label _2 = $b2 + .label _1 = $af + .label _2 = $b0 .label rem = $2d .label dividend = $2f .label quotient = $31 .label i = $33 .label return = $31 - .label return_2 = $a5 - .label return_3 = $a9 - //SEG378 [201] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + .label return_2 = $a3 + .label return_3 = $a7 + //SEG377 [200] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG379 [201] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG378 [200] 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 - //SEG380 [201] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG379 [200] 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 - //SEG381 [201] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG382 [201] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG380 [200] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG381 [200] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG383 [201] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG382 [200] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG384 [201] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG385 [201] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG386 [201] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG387 [201] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG383 [200] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG384 [200] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG385 [200] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG386 [200] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG388 divr16u::@1 + //SEG387 divr16u::@1 b1: - //SEG389 [202] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG388 [201] (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 - //SEG390 [203] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 + //SEG389 [202] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG391 [204] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG390 [203] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _1 sta _2 - //SEG392 [205] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG391 [204] 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 - //SEG393 divr16u::@4 + //SEG392 divr16u::@4 b4: - //SEG394 [206] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG393 [205] (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 - //SEG395 [207] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG394 [206] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG396 [207] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG395 [206] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG397 divr16u::@2 + //SEG396 divr16u::@2 b2: - //SEG398 [208] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG397 [207] (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 - //SEG399 [209] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG398 [208] (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 - //SEG400 [210] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG399 [209] 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 @@ -5715,14 +5699,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG401 divr16u::@5 + //SEG400 divr16u::@5 b5: - //SEG402 [211] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG401 [210] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG403 [212] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG402 [211] (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 - //SEG404 [213] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG403 [212] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG405 [213] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG406 [213] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG404 [212] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG405 [212] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG407 divr16u::@3 + //SEG406 divr16u::@3 b3: - //SEG408 [214] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG407 [213] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG409 [215] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG408 [214] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b3 jmp b6 - //SEG410 divr16u::@6 + //SEG409 divr16u::@6 b6: - //SEG411 [216] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 + //SEG410 [215] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 lda rem sta rem16u lda rem+1 sta rem16u+1 jmp breturn - //SEG412 divr16u::@return + //SEG411 divr16u::@return breturn: - //SEG413 [217] return + //SEG412 [216] return rts } -//SEG414 fill +//SEG413 fill // Fill some memory with a value // fill(byte zeropage($34) val) fill: { - .label end = $b5 + .label end = $b3 .label addr = $35 .label val = $34 - //SEG415 [219] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG414 [218] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -5773,23 +5757,23 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG416 [220] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG415 [219] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] b1_from_fill: b1_from_b1: - //SEG417 [220] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG416 [219] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG418 fill::@1 + //SEG417 fill::@1 b1: - //SEG419 [221] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuz2 + //SEG418 [220] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuz2 lda val ldy #0 sta (addr),y - //SEG420 [222] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG419 [221] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG421 [223] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG420 [222] 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 @@ -5797,9 +5781,9 @@ fill: { cmp end bne b1_from_b1 jmp breturn - //SEG422 fill::@return + //SEG421 fill::@return breturn: - //SEG423 [224] return + //SEG422 [223] return rts } .align $100 @@ -5876,72 +5860,71 @@ Statement [118] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 [ mul16s Statement [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:3::sin16s_gen2:21::mul16s:107 [ 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 [121] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:107 [ 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 [122] 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:107 [ 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 [123] (word~) mul16s::$5 ← > (dword) mul16s::m#0 [ mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:107 [ 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 [124] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$6 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a -Statement [125] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:107 [ 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 [126] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:107 [ 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 [128] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:107 [ 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 [131] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:107::mul16u:119 [ 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:104::mulu16_sel:151::mul16u:184 [ 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:104::mulu16_sel:156::mul16u:184 [ 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:104::mulu16_sel:160::mul16u:184 [ 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:104::mulu16_sel:166::mul16u:184 [ 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:104::mulu16_sel:171::mul16u:184 [ 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 [123] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$6 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a +Statement [124] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:107 [ 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 [125] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:107 [ 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 [127] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:107 [ 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 [130] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:107::mul16u:119 [ 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:104::mulu16_sel:150::mul16u:183 [ 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:104::mulu16_sel:155::mul16u:183 [ 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:104::mulu16_sel:159::mul16u:183 [ 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:104::mulu16_sel:165::mul16u:183 [ 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:104::mulu16_sel:170::mul16u:183 [ 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 [133] 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:107::mul16u:119 [ 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:104::mulu16_sel:151::mul16u:184 [ 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:104::mulu16_sel:156::mul16u:184 [ 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:104::mulu16_sel:160::mul16u:184 [ 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:104::mulu16_sel:166::mul16u:184 [ 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:104::mulu16_sel:171::mul16u:184 [ 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 [135] (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:107::mul16u:119 [ 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:104::mulu16_sel:151::mul16u:184 [ 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:104::mulu16_sel:156::mul16u:184 [ 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:104::mulu16_sel:160::mul16u:184 [ 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:104::mulu16_sel:166::mul16u:184 [ 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:104::mulu16_sel:171::mul16u:184 [ 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 [137] (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:107::mul16u:119 [ 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:104::mulu16_sel:151::mul16u:184 [ 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:104::mulu16_sel:156::mul16u:184 [ 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:104::mulu16_sel:160::mul16u:184 [ 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:104::mulu16_sel:166::mul16u:184 [ 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:104::mulu16_sel:171::mul16u:184 [ 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 [141] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [142] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [144] 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:104 [ 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 [145] (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:104 [ 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 [147] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$6 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$6 ] ) always clobbers reg byte a reg byte y +Statement [132] 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:107::mul16u:119 [ 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:104::mulu16_sel:150::mul16u:183 [ 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:104::mulu16_sel:155::mul16u:183 [ 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:104::mulu16_sel:159::mul16u:183 [ 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:104::mulu16_sel:165::mul16u:183 [ 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:104::mulu16_sel:170::mul16u:183 [ 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 [134] (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:107::mul16u:119 [ 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:104::mulu16_sel:150::mul16u:183 [ 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:104::mulu16_sel:155::mul16u:183 [ 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:104::mulu16_sel:159::mul16u:183 [ 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:104::mulu16_sel:165::mul16u:183 [ 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:104::mulu16_sel:170::mul16u:183 [ 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 [136] (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:107::mul16u:119 [ 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:104::mulu16_sel:150::mul16u:183 [ 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:104::mulu16_sel:155::mul16u:183 [ 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:104::mulu16_sel:159::mul16u:183 [ 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:104::mulu16_sel:165::mul16u:183 [ 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:104::mulu16_sel:170::mul16u:183 [ 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 [140] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [141] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [143] 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:104 [ 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 [144] (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:104 [ 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 [146] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$6 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$6 ] ) 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 [148] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [149] (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:104 [ 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 [150] (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:104 [ 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 [152] (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:104 [ 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 [153] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [154] (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:104 [ 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 [155] (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:104 [ 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 [157] (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:104 [ 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 [158] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [159] (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:104 [ 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 [161] (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:104 [ 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 [162] (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:104 [ 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 [163] (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:104 [ 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 [164] (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:104 [ 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 [165] (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:104 [ 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 [167] (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:104 [ 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 [168] (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:104 [ 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 [169] (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:104 [ 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 [170] (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:104 [ 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 [172] (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:104 [ 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 [173] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [174] (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:104 [ 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 [175] (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:104 [ 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 [177] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [180] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [182] (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:104::mulu16_sel:151 [ 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:104::mulu16_sel:156 [ 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:104::mulu16_sel:160 [ 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:104::mulu16_sel:166 [ 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:104::mulu16_sel:171 [ 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 [183] (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:104::mulu16_sel:151 [ 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:104::mulu16_sel:156 [ 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:104::mulu16_sel:160 [ 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:104::mulu16_sel:166 [ 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:104::mulu16_sel:171 [ 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 [185] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151 [ 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:104::mulu16_sel:156 [ 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:104::mulu16_sel:160 [ 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:104::mulu16_sel:166 [ 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:104::mulu16_sel:171 [ 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 [186] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151 [ 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:104::mulu16_sel:156 [ 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:104::mulu16_sel:160 [ 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:104::mulu16_sel:166 [ 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:104::mulu16_sel:171 [ 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 [187] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151 [ 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:104::mulu16_sel:156 [ 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:104::mulu16_sel:160 [ 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:104::mulu16_sel:166 [ 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:104::mulu16_sel:171 [ 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 [188] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151 [ 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:104::mulu16_sel:156 [ 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:104::mulu16_sel:160 [ 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:104::mulu16_sel:166 [ 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:104::mulu16_sel:171 [ 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 [192] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [193] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [194] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [196] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [197] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [198] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [203] (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:99::divr16u:191 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [147] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [148] (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:104 [ 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 [149] (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:104 [ 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 [151] (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:104 [ 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 [152] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [153] (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:104 [ 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 [154] (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:104 [ 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 [156] (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:104 [ 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 [157] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [158] (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:104 [ 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 [160] (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:104 [ 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 [161] (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:104 [ 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 [162] (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:104 [ 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 [163] (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:104 [ 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 [164] (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:104 [ 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 [166] (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:104 [ 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 [167] (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:104 [ 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 [168] (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:104 [ 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 [169] (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:104 [ 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 [171] (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:104 [ 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 [172] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [173] (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:104 [ 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 [174] (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:104 [ 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 [176] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [179] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [181] (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:104::mulu16_sel:150 [ 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:104::mulu16_sel:155 [ 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:104::mulu16_sel:159 [ 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:104::mulu16_sel:165 [ 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:104::mulu16_sel:170 [ 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 [182] (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:104::mulu16_sel:150 [ 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:104::mulu16_sel:155 [ 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:104::mulu16_sel:159 [ 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:104::mulu16_sel:165 [ 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:104::mulu16_sel:170 [ 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 [184] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150 [ 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:104::mulu16_sel:155 [ 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:104::mulu16_sel:159 [ 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:104::mulu16_sel:165 [ 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:104::mulu16_sel:170 [ 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 [185] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150 [ 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:104::mulu16_sel:155 [ 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:104::mulu16_sel:159 [ 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:104::mulu16_sel:165 [ 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:104::mulu16_sel:170 [ 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 [186] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150 [ 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:104::mulu16_sel:155 [ 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:104::mulu16_sel:159 [ 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:104::mulu16_sel:165 [ 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:104::mulu16_sel:170 [ 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 [187] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150 [ 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:104::mulu16_sel:155 [ 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:104::mulu16_sel:159 [ 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:104::mulu16_sel:165 [ 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:104::mulu16_sel:170 [ 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 [191] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a +Statement [192] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a +Statement [193] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a +Statement [195] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a +Statement [196] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a +Statement [197] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::return#0 ] ) always clobbers reg byte a +Statement [202] (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:99::divr16u:190 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ 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 [204] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:191 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a -Statement [206] (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:99::divr16u:191 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [210] 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:99::divr16u:191 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [212] (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:99::divr16u:191 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [216] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:191 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [219] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 [ 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 [203] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:190 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a +Statement [205] (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:99::divr16u:190 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [209] 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:99::divr16u:190 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [211] (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:99::divr16u:190 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [215] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:190 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [218] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 [ 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 [221] *((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] *((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 [223] 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 [222] 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 @@ -6002,66 +5985,65 @@ Statement [118] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 [ mul16s Statement [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:3::sin16s_gen2:21::mul16s:107 [ 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 [121] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:107 [ 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 [122] 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:107 [ 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 [123] (word~) mul16s::$5 ← > (dword) mul16s::m#0 [ mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:107 [ 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 [124] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$6 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a -Statement [125] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:107 [ 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 [126] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:107 [ 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 [128] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:107 [ 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 [131] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:107::mul16u:119 [ 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:104::mulu16_sel:151::mul16u:184 [ 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:104::mulu16_sel:156::mul16u:184 [ 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:104::mulu16_sel:160::mul16u:184 [ 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:104::mulu16_sel:166::mul16u:184 [ 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:104::mulu16_sel:171::mul16u:184 [ 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 [133] 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:107::mul16u:119 [ 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:104::mulu16_sel:151::mul16u:184 [ 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:104::mulu16_sel:156::mul16u:184 [ 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:104::mulu16_sel:160::mul16u:184 [ 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:104::mulu16_sel:166::mul16u:184 [ 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:104::mulu16_sel:171::mul16u:184 [ 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 [135] (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:107::mul16u:119 [ 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:104::mulu16_sel:151::mul16u:184 [ 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:104::mulu16_sel:156::mul16u:184 [ 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:104::mulu16_sel:160::mul16u:184 [ 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:104::mulu16_sel:166::mul16u:184 [ 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:104::mulu16_sel:171::mul16u:184 [ 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 [137] (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:107::mul16u:119 [ 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:104::mulu16_sel:151::mul16u:184 [ 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:104::mulu16_sel:156::mul16u:184 [ 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:104::mulu16_sel:160::mul16u:184 [ 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:104::mulu16_sel:166::mul16u:184 [ 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:104::mulu16_sel:171::mul16u:184 [ 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 [141] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [142] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [144] 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:104 [ 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 [145] (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:104 [ 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 [147] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$6 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$6 ] ) always clobbers reg byte a reg byte y -Statement [148] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [149] (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:104 [ 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 [150] (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:104 [ 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 [152] (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:104 [ 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 [153] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [154] (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:104 [ 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 [155] (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:104 [ 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 [157] (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:104 [ 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 [158] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [159] (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:104 [ 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 [161] (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:104 [ 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 [162] (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:104 [ 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 [163] (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:104 [ 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 [164] (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:104 [ 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 [165] (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:104 [ 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 [167] (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:104 [ 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 [168] (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:104 [ 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 [169] (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:104 [ 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 [170] (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:104 [ 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 [172] (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:104 [ 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 [173] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [174] (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:104 [ 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 [175] (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:104 [ 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 [177] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [180] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [182] (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:104::mulu16_sel:151 [ 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:104::mulu16_sel:156 [ 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:104::mulu16_sel:160 [ 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:104::mulu16_sel:166 [ 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:104::mulu16_sel:171 [ 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 [183] (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:104::mulu16_sel:151 [ 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:104::mulu16_sel:156 [ 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:104::mulu16_sel:160 [ 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:104::mulu16_sel:166 [ 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:104::mulu16_sel:171 [ 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 [185] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151 [ 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:104::mulu16_sel:156 [ 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:104::mulu16_sel:160 [ 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:104::mulu16_sel:166 [ 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:104::mulu16_sel:171 [ 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 [186] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151 [ 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:104::mulu16_sel:156 [ 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:104::mulu16_sel:160 [ 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:104::mulu16_sel:166 [ 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:104::mulu16_sel:171 [ 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 [187] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151 [ 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:104::mulu16_sel:156 [ 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:104::mulu16_sel:160 [ 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:104::mulu16_sel:166 [ 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:104::mulu16_sel:171 [ 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 [188] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151 [ 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:104::mulu16_sel:156 [ 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:104::mulu16_sel:160 [ 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:104::mulu16_sel:166 [ 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:104::mulu16_sel:171 [ 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 [192] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [193] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [194] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [196] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [197] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [198] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [203] (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:99::divr16u:191 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ 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] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:191 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a -Statement [206] (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:99::divr16u:191 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [210] 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:99::divr16u:191 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [212] (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:99::divr16u:191 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [216] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:191 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [219] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 [ 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 [221] *((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 [223] 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 [123] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$6 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a +Statement [124] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:107 [ 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 [125] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:107 [ 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 [127] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:107 [ 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 [130] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:107::mul16u:119 [ 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:104::mulu16_sel:150::mul16u:183 [ 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:104::mulu16_sel:155::mul16u:183 [ 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:104::mulu16_sel:159::mul16u:183 [ 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:104::mulu16_sel:165::mul16u:183 [ 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:104::mulu16_sel:170::mul16u:183 [ 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 [132] 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:107::mul16u:119 [ 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:104::mulu16_sel:150::mul16u:183 [ 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:104::mulu16_sel:155::mul16u:183 [ 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:104::mulu16_sel:159::mul16u:183 [ 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:104::mulu16_sel:165::mul16u:183 [ 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:104::mulu16_sel:170::mul16u:183 [ 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 [134] (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:107::mul16u:119 [ 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:104::mulu16_sel:150::mul16u:183 [ 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:104::mulu16_sel:155::mul16u:183 [ 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:104::mulu16_sel:159::mul16u:183 [ 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:104::mulu16_sel:165::mul16u:183 [ 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:104::mulu16_sel:170::mul16u:183 [ 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 [136] (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:107::mul16u:119 [ 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:104::mulu16_sel:150::mul16u:183 [ 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:104::mulu16_sel:155::mul16u:183 [ 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:104::mulu16_sel:159::mul16u:183 [ 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:104::mulu16_sel:165::mul16u:183 [ 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:104::mulu16_sel:170::mul16u:183 [ 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 [140] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [141] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [143] 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:104 [ 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 [144] (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:104 [ 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 [146] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$6 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$6 ] ) always clobbers reg byte a reg byte y +Statement [147] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [148] (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:104 [ 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 [149] (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:104 [ 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 [151] (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:104 [ 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 [152] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [153] (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:104 [ 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 [154] (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:104 [ 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 [156] (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:104 [ 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 [157] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [158] (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:104 [ 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 [160] (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:104 [ 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 [161] (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:104 [ 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 [162] (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:104 [ 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 [163] (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:104 [ 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 [164] (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:104 [ 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 [166] (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:104 [ 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 [167] (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:104 [ 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 [168] (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:104 [ 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 [169] (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:104 [ 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 [171] (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:104 [ 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 [172] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [173] (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:104 [ 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 [174] (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:104 [ 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 [176] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [179] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:104 [ 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 [181] (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:104::mulu16_sel:150 [ 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:104::mulu16_sel:155 [ 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:104::mulu16_sel:159 [ 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:104::mulu16_sel:165 [ 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:104::mulu16_sel:170 [ 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 [182] (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:104::mulu16_sel:150 [ 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:104::mulu16_sel:155 [ 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:104::mulu16_sel:159 [ 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:104::mulu16_sel:165 [ 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:104::mulu16_sel:170 [ 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 [184] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150 [ 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:104::mulu16_sel:155 [ 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:104::mulu16_sel:159 [ 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:104::mulu16_sel:165 [ 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:104::mulu16_sel:170 [ 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 [185] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150 [ 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:104::mulu16_sel:155 [ 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:104::mulu16_sel:159 [ 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:104::mulu16_sel:165 [ 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:104::mulu16_sel:170 [ 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 [186] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150 [ 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:104::mulu16_sel:155 [ 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:104::mulu16_sel:159 [ 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:104::mulu16_sel:165 [ 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:104::mulu16_sel:170 [ 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 [187] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150 [ 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:104::mulu16_sel:155 [ 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:104::mulu16_sel:159 [ 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:104::mulu16_sel:165 [ 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:104::mulu16_sel:170 [ 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 [191] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a +Statement [192] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a +Statement [193] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a +Statement [195] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a +Statement [196] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a +Statement [197] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::return#0 ] ) always clobbers reg byte a +Statement [202] (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:99::divr16u:190 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ 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] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:190 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a +Statement [205] (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:99::divr16u:190 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [209] 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:99::divr16u:190 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [211] (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:99::divr16u:190 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [215] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:190 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [218] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 [ 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 [220] *((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 [222] 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#19 render_logo::screen_idx#3 render_logo::screen_idx#17 render_logo::screen_idx#2 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , @@ -6118,160 +6100,158 @@ 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::$5 ] : zp ZP_WORD:108 , -Potential registers zp ZP_WORD:110 [ mul16s::$6 ] : zp ZP_WORD:110 , -Potential registers zp ZP_WORD:112 [ mul16s::$16 ] : zp ZP_WORD:112 , -Potential registers zp ZP_DWORD:114 [ mul16s::return#0 ] : zp ZP_DWORD:114 , -Potential registers zp ZP_BYTE:118 [ mul16u::$1 ] : zp ZP_BYTE:118 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_DWORD:119 [ sin16s::$6 ] : zp ZP_DWORD:119 , -Potential registers zp ZP_WORD:123 [ sin16s::x1#0 ] : zp ZP_WORD:123 , -Potential registers zp ZP_WORD:125 [ mulu16_sel::return#0 ] : zp ZP_WORD:125 , -Potential registers zp ZP_WORD:127 [ sin16s::x2#0 ] : zp ZP_WORD:127 , -Potential registers zp ZP_WORD:129 [ mulu16_sel::return#1 ] : zp ZP_WORD:129 , -Potential registers zp ZP_WORD:131 [ sin16s::x3#0 ] : zp ZP_WORD:131 , -Potential registers zp ZP_WORD:133 [ mulu16_sel::return#2 ] : zp ZP_WORD:133 , -Potential registers zp ZP_WORD:135 [ sin16s::x3_6#0 ] : zp ZP_WORD:135 , -Potential registers zp ZP_WORD:137 [ sin16s::usinx#0 ] : zp ZP_WORD:137 , -Potential registers zp ZP_WORD:139 [ mulu16_sel::return#10 ] : zp ZP_WORD:139 , -Potential registers zp ZP_WORD:141 [ sin16s::x4#0 ] : zp ZP_WORD:141 , -Potential registers zp ZP_WORD:143 [ mulu16_sel::return#11 ] : zp ZP_WORD:143 , -Potential registers zp ZP_WORD:145 [ sin16s::x5#0 ] : zp ZP_WORD:145 , -Potential registers zp ZP_WORD:147 [ sin16s::x5_128#0 ] : zp ZP_WORD:147 , -Potential registers zp ZP_WORD:149 [ sin16s::usinx#1 ] : zp ZP_WORD:149 , -Potential registers zp ZP_DWORD:151 [ mul16u::return#3 ] : zp ZP_DWORD:151 , -Potential registers zp ZP_DWORD:155 [ mulu16_sel::$0 ] : zp ZP_DWORD:155 , -Potential registers zp ZP_DWORD:159 [ mulu16_sel::$1 ] : zp ZP_DWORD:159 , -Potential registers zp ZP_WORD:163 [ mulu16_sel::return#12 ] : zp ZP_WORD:163 , -Potential registers zp ZP_WORD:165 [ divr16u::return#2 ] : zp ZP_WORD:165 , -Potential registers zp ZP_WORD:167 [ div32u16u::quotient_hi#0 ] : zp ZP_WORD:167 , -Potential registers zp ZP_WORD:169 [ divr16u::return#3 ] : zp ZP_WORD:169 , -Potential registers zp ZP_WORD:171 [ div32u16u::quotient_lo#0 ] : zp ZP_WORD:171 , -Potential registers zp ZP_DWORD:173 [ div32u16u::return#0 ] : zp ZP_DWORD:173 , -Potential registers zp ZP_BYTE:177 [ divr16u::$1 ] : zp ZP_BYTE:177 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:178 [ divr16u::$2 ] : zp ZP_BYTE:178 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:179 [ rem16u#1 ] : zp ZP_WORD:179 , -Potential registers zp ZP_WORD:181 [ fill::end#0 ] : zp ZP_WORD:181 , +Potential registers zp ZP_WORD:108 [ mul16s::$6 ] : 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::$6 ] : 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] 501.39: zp ZP_BYTE:5 [ render_logo::screen_idx#19 render_logo::screen_idx#3 render_logo::screen_idx#17 render_logo::screen_idx#2 ] 494.18: zp ZP_BYTE:8 [ render_logo::screen_idx#14 render_logo::screen_idx#20 render_logo::screen_idx#4 render_logo::screen_idx#5 ] 266.73: zp ZP_BYTE:7 [ render_logo::logo_idx#10 render_logo::logo_idx#13 render_logo::logo_idx#3 ] 255.87: zp ZP_BYTE:6 [ render_logo::logo_idx#11 render_logo::logo_idx#2 ] 202: zp ZP_BYTE:67 [ render_logo::$15 ] 202: zp ZP_BYTE:68 [ render_logo::$34 ] 202: zp ZP_BYTE:69 [ render_logo::$38 ] 202: zp ZP_BYTE:70 [ render_logo::$42 ] 202: zp ZP_BYTE:71 [ render_logo::$46 ] 202: zp ZP_BYTE:72 [ render_logo::$50 ] 202: zp ZP_BYTE:74 [ render_logo::$23 ] 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: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:73 [ 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:118 [ 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:151 [ 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:177 [ divr16u::$1 ] 22: zp ZP_BYTE:178 [ 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:165 [ divr16u::return#2 ] 4: zp ZP_WORD:169 [ divr16u::return#3 ] +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:119 [ sin16s::$6 ] 4: zp ZP_WORD:127 [ sin16s::x2#0 ] 4: zp ZP_WORD:135 [ sin16s::x3_6#0 ] 4: zp ZP_WORD:141 [ sin16s::x4#0 ] 4: zp ZP_WORD:145 [ sin16s::x5#0 ] 4: zp ZP_WORD:147 [ sin16s::x5_128#0 ] 1: zp ZP_WORD:131 [ sin16s::x3#0 ] 1: zp ZP_WORD:149 [ sin16s::usinx#1 ] 0.64: zp ZP_WORD:123 [ sin16s::x1#0 ] 0.33: zp ZP_WORD:137 [ 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:125 [ mulu16_sel::return#0 ] 4: zp ZP_WORD:129 [ mulu16_sel::return#1 ] 4: zp ZP_WORD:133 [ mulu16_sel::return#2 ] 4: zp ZP_WORD:139 [ mulu16_sel::return#10 ] 4: zp ZP_WORD:143 [ mulu16_sel::return#11 ] 4: zp ZP_DWORD:155 [ mulu16_sel::$0 ] 4: zp ZP_DWORD:159 [ mulu16_sel::$1 ] 1.71: zp ZP_WORD:163 [ mulu16_sel::return#12 ] 0.33: zp ZP_BYTE:44 [ mulu16_sel::select#5 ] -Uplift Scope [mul16s] 22: zp ZP_DWORD:92 [ mul16s::return#2 ] 20: zp ZP_WORD:108 [ mul16s::$5 ] 12: zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] 4.33: zp ZP_DWORD:114 [ mul16s::return#0 ] 4: zp ZP_WORD:110 [ mul16s::$6 ] 4: zp ZP_WORD:112 [ mul16s::$16 ] 2.6: zp ZP_WORD:90 [ mul16s::a#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::$6 ] 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 [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::$6 ] 4: zp ZP_WORD:110 [ mul16s::$16 ] 2.6: zp ZP_WORD:90 [ 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:181 [ fill::end#0 ] 1.83: zp ZP_BYTE:52 [ fill::val#3 ] +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:179 [ rem16u#1 ] -Uplift Scope [div32u16u] 4: zp ZP_DWORD:80 [ div32u16u::return#2 ] 4: zp ZP_WORD:171 [ div32u16u::quotient_lo#0 ] 1.33: zp ZP_DWORD:173 [ div32u16u::return#0 ] 0.8: zp ZP_WORD:167 [ div32u16u::quotient_hi#0 ] +Uplift Scope [] 26.71: 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 76134 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:151 [ mul16u::return#3 ] -Uplifting [divr16u] best 75924 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:165 [ divr16u::return#2 ] zp ZP_WORD:169 [ divr16u::return#3 ] -Uplifting [sin16s_gen2] best 75924 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 75924 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:119 [ sin16s::$6 ] zp ZP_WORD:127 [ sin16s::x2#0 ] zp ZP_WORD:135 [ sin16s::x3_6#0 ] zp ZP_WORD:141 [ sin16s::x4#0 ] zp ZP_WORD:145 [ sin16s::x5#0 ] zp ZP_WORD:147 [ sin16s::x5_128#0 ] zp ZP_WORD:131 [ sin16s::x3#0 ] zp ZP_WORD:149 [ sin16s::usinx#1 ] zp ZP_WORD:123 [ sin16s::x1#0 ] zp ZP_WORD:137 [ sin16s::usinx#0 ] zp ZP_BYTE:33 [ sin16s::isUpper#2 ] -Uplifting [mulu16_sel] best 75908 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:125 [ mulu16_sel::return#0 ] zp ZP_WORD:129 [ mulu16_sel::return#1 ] zp ZP_WORD:133 [ mulu16_sel::return#2 ] zp ZP_WORD:139 [ mulu16_sel::return#10 ] zp ZP_WORD:143 [ mulu16_sel::return#11 ] zp ZP_DWORD:155 [ mulu16_sel::$0 ] zp ZP_DWORD:159 [ mulu16_sel::$1 ] zp ZP_WORD:163 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] -Uplifting [mul16s] best 75908 combination zp ZP_DWORD:92 [ mul16s::return#2 ] zp ZP_WORD:108 [ mul16s::$5 ] zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp ZP_DWORD:114 [ mul16s::return#0 ] zp ZP_WORD:110 [ mul16s::$6 ] zp ZP_WORD:112 [ mul16s::$16 ] zp ZP_WORD:90 [ mul16s::a#0 ] -Uplifting [loop] best 75908 combination zp ZP_WORD:55 [ loop::$1 ] zp ZP_WORD:57 [ loop::xpos#0 ] -Uplifting [fill] best 75892 combination zp ZP_WORD:53 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp ZP_WORD:181 [ fill::end#0 ] reg byte x [ fill::val#3 ] -Uplifting [main] best 75772 combination reg byte x [ main::ch#2 main::ch#1 ] -Uplifting [] best 75772 combination zp ZP_WORD:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] zp ZP_WORD:179 [ rem16u#1 ] -Uplifting [div32u16u] best 75772 combination zp ZP_DWORD:80 [ div32u16u::return#2 ] zp ZP_WORD:171 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:173 [ div32u16u::return#0 ] zp ZP_WORD:167 [ div32u16u::quotient_hi#0 ] +Uplifting [mul16u] best 76122 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 75912 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 75912 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 75912 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::$6 ] 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 75896 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 [mul16s] best 75896 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::$6 ] zp ZP_WORD:110 [ mul16s::$16 ] zp ZP_WORD:90 [ mul16s::a#0 ] +Uplifting [loop] best 75896 combination zp ZP_WORD:55 [ loop::$1 ] zp ZP_WORD:57 [ loop::xpos#0 ] +Uplifting [fill] best 75880 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 75760 combination reg byte x [ main::ch#2 main::ch#1 ] +Uplifting [] best 75760 combination zp ZP_WORD:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] zp ZP_WORD:177 [ rem16u#1 ] +Uplifting [div32u16u] best 75760 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#19 render_logo::screen_idx#3 render_logo::screen_idx#17 render_logo::screen_idx#2 ] -Uplifting [render_logo] best 70672 combination reg byte x [ render_logo::screen_idx#19 render_logo::screen_idx#3 render_logo::screen_idx#17 render_logo::screen_idx#2 ] +Uplifting [render_logo] best 70660 combination reg byte x [ render_logo::screen_idx#19 render_logo::screen_idx#3 render_logo::screen_idx#17 render_logo::screen_idx#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:8 [ render_logo::screen_idx#14 render_logo::screen_idx#20 render_logo::screen_idx#4 render_logo::screen_idx#5 ] -Uplifting [render_logo] best 65872 combination reg byte x [ render_logo::screen_idx#14 render_logo::screen_idx#20 render_logo::screen_idx#4 render_logo::screen_idx#5 ] +Uplifting [render_logo] best 65860 combination reg byte x [ render_logo::screen_idx#14 render_logo::screen_idx#20 render_logo::screen_idx#4 render_logo::screen_idx#5 ] Attempting to uplift remaining variables inzp ZP_BYTE:7 [ render_logo::logo_idx#10 render_logo::logo_idx#13 render_logo::logo_idx#3 ] -Uplifting [render_logo] best 64669 combination reg byte y [ render_logo::logo_idx#10 render_logo::logo_idx#13 render_logo::logo_idx#3 ] +Uplifting [render_logo] best 64657 combination reg byte y [ render_logo::logo_idx#10 render_logo::logo_idx#13 render_logo::logo_idx#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:6 [ render_logo::logo_idx#11 render_logo::logo_idx#2 ] -Uplifting [render_logo] best 63469 combination reg byte y [ render_logo::logo_idx#11 render_logo::logo_idx#2 ] +Uplifting [render_logo] best 63457 combination reg byte y [ render_logo::logo_idx#11 render_logo::logo_idx#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:67 [ render_logo::$15 ] -Uplifting [render_logo] best 62869 combination reg byte a [ render_logo::$15 ] +Uplifting [render_logo] best 62857 combination reg byte a [ render_logo::$15 ] Attempting to uplift remaining variables inzp ZP_BYTE:68 [ render_logo::$34 ] -Uplifting [render_logo] best 62269 combination reg byte a [ render_logo::$34 ] +Uplifting [render_logo] best 62257 combination reg byte a [ render_logo::$34 ] Attempting to uplift remaining variables inzp ZP_BYTE:69 [ render_logo::$38 ] -Uplifting [render_logo] best 61669 combination reg byte a [ render_logo::$38 ] +Uplifting [render_logo] best 61657 combination reg byte a [ render_logo::$38 ] Attempting to uplift remaining variables inzp ZP_BYTE:70 [ render_logo::$42 ] -Uplifting [render_logo] best 61069 combination reg byte a [ render_logo::$42 ] +Uplifting [render_logo] best 61057 combination reg byte a [ render_logo::$42 ] Attempting to uplift remaining variables inzp ZP_BYTE:71 [ render_logo::$46 ] -Uplifting [render_logo] best 60469 combination reg byte a [ render_logo::$46 ] +Uplifting [render_logo] best 60457 combination reg byte a [ render_logo::$46 ] Attempting to uplift remaining variables inzp ZP_BYTE:72 [ render_logo::$50 ] -Uplifting [render_logo] best 59869 combination reg byte a [ render_logo::$50 ] +Uplifting [render_logo] best 59857 combination reg byte a [ render_logo::$50 ] Attempting to uplift remaining variables inzp ZP_BYTE:74 [ render_logo::$23 ] -Uplifting [render_logo] best 59269 combination reg byte a [ render_logo::$23 ] +Uplifting [render_logo] best 59257 combination reg byte a [ render_logo::$23 ] Attempting to uplift remaining variables inzp ZP_BYTE:75 [ render_logo::$80 ] -Uplifting [render_logo] best 58669 combination reg byte a [ render_logo::$80 ] +Uplifting [render_logo] best 58657 combination reg byte a [ render_logo::$80 ] Attempting to uplift remaining variables inzp ZP_BYTE:76 [ render_logo::$84 ] -Uplifting [render_logo] best 58069 combination reg byte a [ render_logo::$84 ] +Uplifting [render_logo] best 58057 combination reg byte a [ render_logo::$84 ] Attempting to uplift remaining variables inzp ZP_BYTE:77 [ render_logo::$88 ] -Uplifting [render_logo] best 57469 combination reg byte a [ render_logo::$88 ] +Uplifting [render_logo] best 57457 combination reg byte a [ render_logo::$88 ] Attempting to uplift remaining variables inzp ZP_BYTE:78 [ render_logo::$92 ] -Uplifting [render_logo] best 56869 combination reg byte a [ render_logo::$92 ] +Uplifting [render_logo] best 56857 combination reg byte a [ render_logo::$92 ] Attempting to uplift remaining variables inzp ZP_BYTE:79 [ render_logo::$96 ] -Uplifting [render_logo] best 56269 combination reg byte a [ render_logo::$96 ] +Uplifting [render_logo] best 56257 combination reg byte a [ render_logo::$96 ] Attempting to uplift remaining variables inzp ZP_BYTE:61 [ render_logo::$0 ] -Uplifting [render_logo] best 56263 combination reg byte a [ render_logo::$0 ] +Uplifting [render_logo] best 56251 combination reg byte a [ render_logo::$0 ] Attempting to uplift remaining variables inzp ZP_BYTE:62 [ render_logo::$1 ] -Uplifting [render_logo] best 56257 combination reg byte a [ render_logo::$1 ] +Uplifting [render_logo] best 56245 combination reg byte a [ render_logo::$1 ] Attempting to uplift remaining variables inzp ZP_BYTE:63 [ render_logo::$2 ] -Uplifting [render_logo] best 56251 combination reg byte a [ render_logo::$2 ] +Uplifting [render_logo] best 56239 combination reg byte a [ render_logo::$2 ] Attempting to uplift remaining variables inzp ZP_BYTE:73 [ render_logo::$17 ] -Uplifting [render_logo] best 56247 combination reg byte a [ render_logo::$17 ] +Uplifting [render_logo] best 56235 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 56247 combination zp ZP_BYTE:66 [ render_logo::x_char#0 ] +Uplifting [render_logo] best 56235 combination zp ZP_BYTE:66 [ render_logo::x_char#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:33 [ sin16s::isUpper#2 ] -Uplifting [sin16s] best 56247 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:149 [ 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:131 [ 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:179 [ rem16u#1 ] ] - score: 2 +Uplifting [sin16s] best 56235 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:114 [ mul16s::return#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 ] ] 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:151 [ 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:119 [ sin16s::$6 ] ] - 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::$6 ] ] - 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:127 [ 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:141 [ 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:165 [ 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:169 [ divr16u::return#3 ] ] - 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::$1 ] ] with [ zp ZP_WORD:57 [ loop::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:173 [ div32u16u::return#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:110 [ mul16s::$6 ] ] with [ zp ZP_WORD:112 [ mul16s::$16 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:125 [ mulu16_sel::return#0 ] ] with [ zp ZP_WORD:163 [ mulu16_sel::return#12 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:133 [ mulu16_sel::return#2 ] ] with [ zp ZP_WORD:135 [ sin16s::x3_6#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:143 [ mulu16_sel::return#11 ] ] with [ zp ZP_WORD:145 [ sin16s::x5#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:155 [ mulu16_sel::$0 ] ] with [ zp ZP_DWORD:159 [ mulu16_sel::$1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:108 [ mul16s::$6 ] ] 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: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:137 [ 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:129 [ 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:139 [ 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:171 [ div32u16u::quotient_lo#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::$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:125 [ mulu16_sel::return#0 mulu16_sel::return#12 ] ] with [ zp ZP_WORD:133 [ mulu16_sel::return#2 sin16s::x3_6#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:125 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 ] ] with [ zp ZP_WORD:143 [ 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:155 [ mulu16_sel::$0 mulu16_sel::$1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:125 [ 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:147 [ sin16s::x5_128#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_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 fill::addr#2 fill::addr#0 fill::addr#1 ] ] with [ zp ZP_WORD:108 [ mul16s::$5 ] ] 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:181 [ 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 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::$6 ] ] 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: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:110 [ mul16s::$6 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::$6 mul16s::$16 ] ] with [ zp ZP_WORD:125 [ 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:167 [ 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 render_logo::$3 sin16s_gen2::$6 sin16s_gen2::$8 ] ] with [ zp ZP_WORD:108 [ mul16s::$6 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::$6 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 ] ] Coalescing zero page register [ zp ZP_BYTE:33 [ sin16s::isUpper#2 ] ] with [ zp ZP_BYTE:66 [ render_logo::x_char#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 mul16s::$5 ] +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_DWORD:9) zp ZP_DWORD:4 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] Allocated (was zp ZP_WORD:15) zp ZP_WORD:8 [ 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_DWORD:17) zp ZP_DWORD:10 [ 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::$6 ] @@ -6282,7 +6262,7 @@ Allocated (was zp ZP_BYTE:33) zp ZP_BYTE:22 [ sin16s::isUpper#2 render_logo::x_c 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:80) zp ZP_DWORD:27 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ] -Allocated (was zp ZP_WORD:123) zp ZP_WORD:31 [ sin16s::x1#0 ] +Allocated (was zp ZP_WORD:121) zp ZP_WORD:31 [ sin16s::x1#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -6366,11 +6346,11 @@ main: { lda #VIC_MCM sta D016 //SEG22 [13] call fill - //SEG23 [218] phi from main::@3 to fill [phi:main::@3->fill] + //SEG23 [217] phi from main::@3 to fill [phi:main::@3->fill] fill_from_b3: - //SEG24 [218] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuxx=vbuc1 + //SEG24 [217] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuxx=vbuc1 ldx #BLACK - //SEG25 [218] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 + //SEG25 [217] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 lda #SCREEN @@ -6382,11 +6362,11 @@ main: { //SEG27 main::@4 b4: //SEG28 [15] call fill - //SEG29 [218] phi from main::@4 to fill [phi:main::@4->fill] + //SEG29 [217] phi from main::@4 to fill [phi:main::@4->fill] fill_from_b4: - //SEG30 [218] 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 [217] 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 [218] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 + //SEG31 [217] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 lda #COLS @@ -6848,7 +6828,7 @@ sin16s_gen2: { .label x = 4 .label i = 8 //SEG185 [99] call div32u16u - //SEG186 [190] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG186 [189] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] div32u16u_from_sin16s_gen2: jsr div32u16u //SEG187 [100] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 @@ -6975,7 +6955,6 @@ sin16s_gen2: { // Fixes offsets introduced by using unsigned multiplication // mul16s(signed word zeropage($17) a) mul16s: { - .label _5 = 2 .label _6 = $e .label _16 = $e .label m = $a @@ -6987,10 +6966,10 @@ mul16s: { lda a+1 sta mul16u.a+1 //SEG219 [119] call mul16u - //SEG220 [130] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG220 [129] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //SEG221 [130] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy - //SEG222 [130] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 + //SEG221 [129] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG222 [129] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl @@ -7007,17 +6986,12 @@ mul16s: { jmp b3 //SEG227 mul16s::@3 b3: - //SEG228 [123] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 - lda m+2 - sta _5 - lda m+3 - sta _5+1 - //SEG229 [124] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG228 [123] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG230 [125] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG229 [124] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 lda _16 sec sbc #sin16s_gen2.ampl sta _16+1 - //SEG231 [126] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG230 [125] (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 - //SEG232 [127] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG231 [126] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] b1_from_b3: b1_from_b6: - //SEG233 [127] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG232 [126] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy jmp b1 - //SEG234 mul16s::@1 + //SEG233 mul16s::@1 b1: jmp b2 - //SEG235 mul16s::@2 + //SEG234 mul16s::@2 b2: - //SEG236 [128] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG235 [127] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 jmp breturn - //SEG237 mul16s::@return + //SEG236 mul16s::@return breturn: - //SEG238 [129] return + //SEG237 [128] return rts } -//SEG239 mul16u +//SEG238 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage($10) a, word zeropage($e) b) mul16u: { @@ -7056,7 +7030,7 @@ mul16u: { .label res = $a .label return = $a .label b = $e - //SEG240 [131] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG239 [130] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -7064,42 +7038,42 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG241 [132] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG240 [131] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG242 [132] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG243 [132] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG241 [131] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG242 [131] 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 - //SEG244 [132] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG243 [131] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG245 mul16u::@1 + //SEG244 mul16u::@1 b1: - //SEG246 [133] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG245 [132] 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 - //SEG247 mul16u::@return + //SEG246 mul16u::@return breturn: - //SEG248 [134] return + //SEG247 [133] return rts - //SEG249 mul16u::@2 + //SEG248 mul16u::@2 b2: - //SEG250 [135] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG249 [134] (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 - //SEG251 [136] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 + //SEG250 [135] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4_from_b2 jmp b7 - //SEG252 mul16u::@7 + //SEG251 mul16u::@7 b7: - //SEG253 [137] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG252 [136] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -7113,30 +7087,30 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG254 [138] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG253 [137] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG255 [138] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG254 [137] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG256 mul16u::@4 + //SEG255 mul16u::@4 b4: - //SEG257 [139] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG256 [138] (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 - //SEG258 [140] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG257 [139] (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 - //SEG259 [132] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG258 [131] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //SEG260 [132] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG261 [132] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG262 [132] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG259 [131] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG260 [131] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG261 [131] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG263 sin16s +//SEG262 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 @@ -7155,7 +7129,7 @@ sin16s: { .label x5_128 = $e .label sinx = $17 .label isUpper = $16 - //SEG264 [141] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG263 [140] 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 @@ -7173,9 +7147,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG265 sin16s::@4 + //SEG264 sin16s::@4 b4: - //SEG266 [142] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG265 [141] (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 - //SEG267 [143] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG266 [142] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //SEG268 [143] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG267 [142] 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 - //SEG269 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG268 [142] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG270 [143] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG269 [142] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG271 [143] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG270 [142] 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 - //SEG272 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG271 [142] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG273 sin16s::@1 + //SEG272 sin16s::@1 b1: - //SEG274 [144] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG273 [143] 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 @@ -7223,9 +7197,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG275 sin16s::@5 + //SEG274 sin16s::@5 b5: - //SEG276 [145] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG275 [144] (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 - //SEG277 [146] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG276 [145] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG278 [146] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG277 [145] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG279 sin16s::@2 + //SEG278 sin16s::@2 b2: - //SEG280 [147] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 + //SEG279 [146] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 ldy #3 !: asl _6 @@ -7255,80 +7229,80 @@ sin16s: { rol _6+3 dey bne !- - //SEG281 [148] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG280 [147] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG282 [149] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG281 [148] (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 - //SEG283 [150] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG282 [149] (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 - //SEG284 [151] call mulu16_sel - //SEG285 [181] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG283 [150] call mulu16_sel + //SEG284 [180] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG286 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG285 [180] 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 - //SEG287 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG288 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG286 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG287 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG289 [152] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + //SEG288 [151] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 jmp b8 - //SEG290 sin16s::@8 + //SEG289 sin16s::@8 b8: - //SEG291 [153] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG290 [152] (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 - //SEG292 [154] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - //SEG293 [155] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG291 [153] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG292 [154] (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 - //SEG294 [156] call mulu16_sel - //SEG295 [181] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG293 [155] call mulu16_sel + //SEG294 [180] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG296 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG295 [180] 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 - //SEG297 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy - //SEG298 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG296 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG297 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG299 [157] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG298 [156] (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 b9 - //SEG300 sin16s::@9 + //SEG299 sin16s::@9 b9: - //SEG301 [158] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - //SEG302 [159] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - //SEG303 [160] call mulu16_sel - //SEG304 [181] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG300 [157] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG301 [158] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG302 [159] call mulu16_sel + //SEG303 [180] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG305 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG304 [180] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG306 [181] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG305 [180] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG307 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG306 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG308 [161] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + //SEG307 [160] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 jmp b10 - //SEG309 sin16s::@10 + //SEG308 sin16s::@10 b10: - //SEG310 [162] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - //SEG311 [163] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG309 [161] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + //SEG310 [162] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -7336,56 +7310,56 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG312 [164] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - //SEG313 [165] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG311 [163] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG312 [164] (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 - //SEG314 [166] call mulu16_sel - //SEG315 [181] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG313 [165] call mulu16_sel + //SEG314 [180] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG316 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG315 [180] 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 - //SEG317 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG318 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG316 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG317 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG319 [167] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG318 [166] (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 b11 - //SEG320 sin16s::@11 + //SEG319 sin16s::@11 b11: - //SEG321 [168] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - //SEG322 [169] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - //SEG323 [170] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG320 [167] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + //SEG321 [168] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG322 [169] (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 - //SEG324 [171] call mulu16_sel - //SEG325 [181] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG323 [170] call mulu16_sel + //SEG324 [180] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] mulu16_sel_from_b11: - //SEG326 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG325 [180] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG327 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy - //SEG328 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + //SEG326 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG327 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG329 [172] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + //SEG328 [171] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 jmp b12 - //SEG330 sin16s::@12 + //SEG329 sin16s::@12 b12: - //SEG331 [173] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - //SEG332 [174] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 + //SEG330 [172] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + //SEG331 [173] (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 !- - //SEG333 [175] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG332 [174] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -7393,14 +7367,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG334 [176] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 + //SEG333 [175] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b15 jmp b6 - //SEG335 sin16s::@6 + //SEG334 sin16s::@6 b6: - //SEG336 [177] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG335 [176] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda sinx eor #$ff @@ -7410,24 +7384,24 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG337 [178] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG336 [177] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] b3_from_b15: b3_from_b6: - //SEG338 [178] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG337 [177] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG339 sin16s::@3 + //SEG338 sin16s::@3 b3: jmp breturn - //SEG340 sin16s::@return + //SEG339 sin16s::@return breturn: - //SEG341 [179] return + //SEG340 [178] return rts - //SEG342 sin16s::@15 + //SEG341 sin16s::@15 b15: - //SEG343 [180] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG342 [179] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 jmp b3_from_b15 } -//SEG344 mulu16_sel +//SEG343 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($e) v2, byte register(X) select) @@ -7439,24 +7413,24 @@ mulu16_sel: { .label return = $e .label return_1 = $19 .label return_10 = $19 - //SEG345 [182] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG344 [181] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG346 [183] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - //SEG347 [184] call mul16u - //SEG348 [130] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG345 [182] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + //SEG346 [183] call mul16u + //SEG347 [129] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] mul16u_from_mulu16_sel: - //SEG349 [130] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy - //SEG350 [130] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy + //SEG348 [129] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG349 [129] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - //SEG351 [185] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG350 [184] (dword) mul16u::return#3 ← (dword) mul16u::res#2 jmp b2 - //SEG352 mulu16_sel::@2 + //SEG351 mulu16_sel::@2 b2: - //SEG353 [186] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - //SEG354 [187] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + //SEG352 [185] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + //SEG353 [186] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -7467,64 +7441,64 @@ mulu16_sel: { dex bne !- !e: - //SEG355 [188] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG354 [187] (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 - //SEG356 mulu16_sel::@return + //SEG355 mulu16_sel::@return breturn: - //SEG357 [189] return + //SEG356 [188] return rts } -//SEG358 div32u16u +//SEG357 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 = $10 .label quotient_lo = $e .label return = $1b - //SEG359 [191] call divr16u - //SEG360 [200] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG358 [190] call divr16u + //SEG359 [199] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG361 [200] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG360 [199] 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 - //SEG362 [200] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG361 [199] 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 - //SEG363 [192] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG362 [191] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp b2 - //SEG364 div32u16u::@2 + //SEG363 div32u16u::@2 b2: - //SEG365 [193] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG364 [192] (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 - //SEG366 [194] (word) divr16u::rem#4 ← (word) rem16u#1 - //SEG367 [195] call divr16u - //SEG368 [200] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG365 [193] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG366 [194] call divr16u + //SEG367 [199] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] divr16u_from_b2: - //SEG369 [200] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG368 [199] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG370 [200] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG369 [199] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG371 [196] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG370 [195] (word) divr16u::return#3 ← (word) divr16u::return#0 jmp b3 - //SEG372 div32u16u::@3 + //SEG371 div32u16u::@3 b3: - //SEG373 [197] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - //SEG374 [198] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG372 [196] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG373 [197] (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 @@ -7534,12 +7508,12 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG375 div32u16u::@return + //SEG374 div32u16u::@return breturn: - //SEG376 [199] return + //SEG375 [198] return rts } -//SEG377 divr16u +//SEG376 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 @@ -7550,58 +7524,58 @@ divr16u: { .label dividend = 8 .label quotient = $e .label return = $e - //SEG378 [201] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG377 [200] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG379 [201] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG378 [200] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG380 [201] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG379 [200] 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 - //SEG381 [201] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG382 [201] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG380 [200] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG381 [200] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG383 [201] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG382 [200] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG384 [201] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG385 [201] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG386 [201] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG387 [201] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG383 [200] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG384 [200] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG385 [200] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG386 [200] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG388 divr16u::@1 + //SEG387 divr16u::@1 b1: - //SEG389 [202] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG388 [201] (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 - //SEG390 [203] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG389 [202] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG391 [204] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG390 [203] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG392 [205] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG391 [204] 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 - //SEG393 divr16u::@4 + //SEG392 divr16u::@4 b4: - //SEG394 [206] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG393 [205] (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 - //SEG395 [207] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG394 [206] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG396 [207] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG395 [206] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG397 divr16u::@2 + //SEG396 divr16u::@2 b2: - //SEG398 [208] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG397 [207] (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 - //SEG399 [209] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG398 [208] (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 - //SEG400 [210] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG399 [209] 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 @@ -7611,14 +7585,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG401 divr16u::@5 + //SEG400 divr16u::@5 b5: - //SEG402 [211] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG401 [210] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG403 [212] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG402 [211] (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 - //SEG404 [213] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG403 [212] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG405 [213] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG406 [213] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG404 [212] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG405 [212] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG407 divr16u::@3 + //SEG406 divr16u::@3 b3: - //SEG408 [214] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG407 [213] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG409 [215] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG408 [214] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b3 jmp b6 - //SEG410 divr16u::@6 + //SEG409 divr16u::@6 b6: - //SEG411 [216] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG410 [215] (word) rem16u#1 ← (word) divr16u::rem#11 jmp breturn - //SEG412 divr16u::@return + //SEG411 divr16u::@return breturn: - //SEG413 [217] return + //SEG412 [216] return rts } -//SEG414 fill +//SEG413 fill // Fill some memory with a value // fill(byte register(X) val) fill: { .label end = 8 .label addr = 2 - //SEG415 [219] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG414 [218] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -7663,23 +7637,23 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG416 [220] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG415 [219] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] b1_from_fill: b1_from_b1: - //SEG417 [220] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG416 [219] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG418 fill::@1 + //SEG417 fill::@1 b1: - //SEG419 [221] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx + //SEG418 [220] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (addr),y - //SEG420 [222] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG419 [221] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG421 [223] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG420 [222] 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 @@ -7687,9 +7661,9 @@ fill: { cmp end bne b1_from_b1 jmp breturn - //SEG422 fill::@return + //SEG421 fill::@return breturn: - //SEG423 [224] return + //SEG422 [223] return rts } .align $100 @@ -8182,7 +8156,6 @@ FINAL SYMBOL TABLE (byte*) main::toD0181_screen (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) (word~) mul16s::$16 $16 zp ZP_WORD:14 4.0 -(word~) mul16s::$5 $5 zp ZP_WORD:2 20.0 (word~) mul16s::$6 $6 zp ZP_WORD:14 4.0 (label) mul16s::@1 (label) mul16s::@2 @@ -8414,7 +8387,7 @@ FINAL SYMBOL TABLE (word) xsin_idx#3 xsin_idx zp ZP_WORD:2 11.0 reg byte x [ main::ch#2 main::ch#1 ] -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 mul16s::$5 ] +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 ] reg byte x [ render_logo::screen_idx#19 render_logo::screen_idx#3 render_logo::screen_idx#17 render_logo::screen_idx#2 ] reg byte y [ render_logo::logo_idx#11 render_logo::logo_idx#2 ] reg byte y [ render_logo::logo_idx#10 render_logo::logo_idx#13 render_logo::logo_idx#3 ] @@ -8455,7 +8428,7 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER -Score: 41401 +Score: 41389 //SEG0 File Comments //SEG1 Basic Upstart @@ -8522,10 +8495,10 @@ main: { lda #VIC_MCM sta D016 //SEG22 [13] call fill - //SEG23 [218] phi from main::@3 to fill [phi:main::@3->fill] - //SEG24 [218] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuxx=vbuc1 + //SEG23 [217] phi from main::@3 to fill [phi:main::@3->fill] + //SEG24 [217] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuxx=vbuc1 ldx #BLACK - //SEG25 [218] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 + //SEG25 [217] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 lda #SCREEN @@ -8534,10 +8507,10 @@ main: { //SEG26 [14] phi from main::@3 to main::@4 [phi:main::@3->main::@4] //SEG27 main::@4 //SEG28 [15] call fill - //SEG29 [218] phi from main::@4 to fill [phi:main::@4->fill] - //SEG30 [218] 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 [217] phi from main::@4 to fill [phi:main::@4->fill] + //SEG30 [217] 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 [218] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 + //SEG31 [217] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 lda #COLS @@ -8897,7 +8870,7 @@ sin16s_gen2: { .label x = 4 .label i = 8 //SEG185 [99] call div32u16u - //SEG186 [190] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG186 [189] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] jsr div32u16u //SEG187 [100] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 //SEG188 sin16s_gen2::@3 @@ -9009,7 +8982,6 @@ sin16s_gen2: { // Fixes offsets introduced by using unsigned multiplication // mul16s(signed word zeropage($17) a) mul16s: { - .label _5 = 2 .label _6 = $e .label _16 = $e .label m = $a @@ -9021,9 +8993,9 @@ mul16s: { lda a+1 sta mul16u.a+1 //SEG219 [119] call mul16u - //SEG220 [130] phi from mul16s to mul16u [phi:mul16s->mul16u] - //SEG221 [130] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy - //SEG222 [130] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 + //SEG220 [129] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG221 [129] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG222 [129] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl @@ -9036,17 +9008,12 @@ mul16s: { lda a+1 bpl b2 //SEG227 mul16s::@3 - //SEG228 [123] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 - lda m+2 - sta _5 - lda m+3 - sta _5+1 - //SEG229 [124] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG228 [123] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG230 [125] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG229 [124] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 lda _16 sec sbc #sin16s_gen2.ampl sta _16+1 - //SEG231 [126] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG230 [125] (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 - //SEG232 [127] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] - //SEG233 [127] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy - //SEG234 mul16s::@1 - //SEG235 mul16s::@2 + //SEG231 [126] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG232 [126] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG233 mul16s::@1 + //SEG234 mul16s::@2 b2: - //SEG236 [128] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 - //SEG237 mul16s::@return - //SEG238 [129] return + //SEG235 [127] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG236 mul16s::@return + //SEG237 [128] return rts } -//SEG239 mul16u +//SEG238 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage($10) a, word zeropage($e) b) mul16u: { @@ -9078,7 +9045,7 @@ mul16u: { .label res = $a .label return = $a .label b = $e - //SEG240 [131] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG239 [130] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -9086,34 +9053,34 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG241 [132] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] - //SEG242 [132] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG243 [132] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG240 [131] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG241 [131] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG242 [131] 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 - //SEG244 [132] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy - //SEG245 mul16u::@1 + //SEG243 [131] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG244 mul16u::@1 b1: - //SEG246 [133] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG245 [132] 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 - //SEG247 mul16u::@return - //SEG248 [134] return + //SEG246 mul16u::@return + //SEG247 [133] return rts - //SEG249 mul16u::@2 + //SEG248 mul16u::@2 b2: - //SEG250 [135] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG249 [134] (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 - //SEG251 [136] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 + //SEG250 [135] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 - //SEG252 mul16u::@7 - //SEG253 [137] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG251 mul16u::@7 + //SEG252 [136] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -9127,26 +9094,26 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG254 [138] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] - //SEG255 [138] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy - //SEG256 mul16u::@4 + //SEG253 [137] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG254 [137] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG255 mul16u::@4 b4: - //SEG257 [139] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG256 [138] (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 - //SEG258 [140] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG257 [139] (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 - //SEG259 [132] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] - //SEG260 [132] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG261 [132] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG262 [132] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG258 [131] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG259 [131] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG260 [131] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG261 [131] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG263 sin16s +//SEG262 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 @@ -9165,7 +9132,7 @@ sin16s: { .label x5_128 = $e .label sinx = $17 .label isUpper = $16 - //SEG264 [141] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG263 [140] 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 @@ -9182,8 +9149,8 @@ sin16s: { cmp #PI_u4f28>>$10 sta x+3 - //SEG267 [143] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] - //SEG268 [143] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG266 [142] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG267 [142] 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 - //SEG269 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG268 [142] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG270 [143] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG269 [142] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b4: - //SEG271 [143] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG270 [142] 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 - //SEG272 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy - //SEG273 sin16s::@1 + //SEG271 [142] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG272 sin16s::@1 b1: - //SEG274 [144] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG273 [143] 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 @@ -9228,8 +9195,8 @@ sin16s: { cmp #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG277 [146] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] - //SEG278 [146] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy - //SEG279 sin16s::@2 + //SEG276 [145] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG277 [145] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG278 sin16s::@2 b2: - //SEG280 [147] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 + //SEG279 [146] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 ldy #3 !: asl _6 @@ -9256,71 +9223,71 @@ sin16s: { rol _6+3 dey bne !- - //SEG281 [148] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG280 [147] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG282 [149] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG281 [148] (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 - //SEG283 [150] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG282 [149] (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 - //SEG284 [151] call mulu16_sel - //SEG285 [181] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] - //SEG286 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG283 [150] call mulu16_sel + //SEG284 [180] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG285 [180] 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 - //SEG287 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG288 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG286 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG287 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG289 [152] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 - //SEG290 sin16s::@8 - //SEG291 [153] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG288 [151] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + //SEG289 sin16s::@8 + //SEG290 [152] (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 - //SEG292 [154] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - //SEG293 [155] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG291 [153] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG292 [154] (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 - //SEG294 [156] call mulu16_sel - //SEG295 [181] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] - //SEG296 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG293 [155] call mulu16_sel + //SEG294 [180] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG295 [180] 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 - //SEG297 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy - //SEG298 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG296 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG297 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG299 [157] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG298 [156] (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 - //SEG300 sin16s::@9 - //SEG301 [158] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - //SEG302 [159] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - //SEG303 [160] call mulu16_sel - //SEG304 [181] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] - //SEG305 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG299 sin16s::@9 + //SEG300 [157] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG301 [158] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG302 [159] call mulu16_sel + //SEG303 [180] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG304 [180] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG306 [181] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG305 [180] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG307 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG306 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG308 [161] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 - //SEG309 sin16s::@10 - //SEG310 [162] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - //SEG311 [163] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG307 [160] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + //SEG308 sin16s::@10 + //SEG309 [161] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + //SEG310 [162] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -9328,50 +9295,50 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG312 [164] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - //SEG313 [165] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG311 [163] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG312 [164] (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 - //SEG314 [166] call mulu16_sel - //SEG315 [181] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] - //SEG316 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG313 [165] call mulu16_sel + //SEG314 [180] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG315 [180] 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 - //SEG317 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG318 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG316 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG317 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG319 [167] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG318 [166] (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 - //SEG320 sin16s::@11 - //SEG321 [168] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - //SEG322 [169] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - //SEG323 [170] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG319 sin16s::@11 + //SEG320 [167] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + //SEG321 [168] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG322 [169] (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 - //SEG324 [171] call mulu16_sel - //SEG325 [181] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] - //SEG326 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG323 [170] call mulu16_sel + //SEG324 [180] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG325 [180] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG327 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy - //SEG328 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + //SEG326 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG327 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG329 [172] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 - //SEG330 sin16s::@12 - //SEG331 [173] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - //SEG332 [174] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 + //SEG328 [171] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + //SEG329 sin16s::@12 + //SEG330 [172] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + //SEG331 [173] (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 !- - //SEG333 [175] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG332 [174] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -9379,12 +9346,12 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG334 [176] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 + //SEG333 [175] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b3 - //SEG335 sin16s::@6 - //SEG336 [177] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG334 sin16s::@6 + //SEG335 [176] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda sinx eor #$ff @@ -9394,17 +9361,17 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG337 [178] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] - //SEG338 [178] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy - //SEG339 sin16s::@3 + //SEG336 [177] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG337 [177] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG338 sin16s::@3 b3: - //SEG340 sin16s::@return - //SEG341 [179] return + //SEG339 sin16s::@return + //SEG340 [178] return rts - //SEG342 sin16s::@15 - //SEG343 [180] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG341 sin16s::@15 + //SEG342 [179] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 } -//SEG344 mulu16_sel +//SEG343 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($e) v2, byte register(X) select) @@ -9416,21 +9383,21 @@ mulu16_sel: { .label return = $e .label return_1 = $19 .label return_10 = $19 - //SEG345 [182] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG344 [181] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG346 [183] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - //SEG347 [184] call mul16u - //SEG348 [130] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] - //SEG349 [130] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy - //SEG350 [130] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy + //SEG345 [182] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + //SEG346 [183] call mul16u + //SEG347 [129] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG348 [129] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG349 [129] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - //SEG351 [185] (dword) mul16u::return#3 ← (dword) mul16u::res#2 - //SEG352 mulu16_sel::@2 - //SEG353 [186] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - //SEG354 [187] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + //SEG350 [184] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG351 mulu16_sel::@2 + //SEG352 [185] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + //SEG353 [186] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -9441,55 +9408,55 @@ mulu16_sel: { dex bne !- !e: - //SEG355 [188] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG354 [187] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return lda _1+3 sta return+1 - //SEG356 mulu16_sel::@return - //SEG357 [189] return + //SEG355 mulu16_sel::@return + //SEG356 [188] return rts } -//SEG358 div32u16u +//SEG357 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 = $10 .label quotient_lo = $e .label return = $1b - //SEG359 [191] call divr16u - //SEG360 [200] phi from div32u16u to divr16u [phi:div32u16u->divr16u] - //SEG361 [200] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG358 [190] call divr16u + //SEG359 [199] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG360 [199] 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 - //SEG362 [200] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG361 [199] 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 - //SEG363 [192] (word) divr16u::return#2 ← (word) divr16u::return#0 - //SEG364 div32u16u::@2 - //SEG365 [193] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG362 [191] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG363 div32u16u::@2 + //SEG364 [192] (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 - //SEG366 [194] (word) divr16u::rem#4 ← (word) rem16u#1 - //SEG367 [195] call divr16u - //SEG368 [200] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] - //SEG369 [200] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG365 [193] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG366 [194] call divr16u + //SEG367 [199] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG368 [199] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG370 [200] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG369 [199] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG371 [196] (word) divr16u::return#3 ← (word) divr16u::return#0 - //SEG372 div32u16u::@3 - //SEG373 [197] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - //SEG374 [198] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG370 [195] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG371 div32u16u::@3 + //SEG372 [196] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG373 [197] (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 @@ -9498,11 +9465,11 @@ div32u16u: { sta return lda quotient_lo+1 sta return+1 - //SEG375 div32u16u::@return - //SEG376 [199] return + //SEG374 div32u16u::@return + //SEG375 [198] return rts } -//SEG377 divr16u +//SEG376 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 @@ -9513,48 +9480,48 @@ divr16u: { .label dividend = 8 .label quotient = $e .label return = $e - //SEG378 [201] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - //SEG379 [201] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG377 [200] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG378 [200] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG380 [201] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG379 [200] 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 - //SEG381 [201] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG382 [201] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy - //SEG383 [201] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - //SEG384 [201] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG385 [201] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG386 [201] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG387 [201] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy - //SEG388 divr16u::@1 + //SEG380 [200] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG381 [200] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG382 [200] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG383 [200] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG384 [200] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG385 [200] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG386 [200] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG387 divr16u::@1 b1: - //SEG389 [202] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG388 [201] (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 - //SEG390 [203] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG389 [202] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG391 [204] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG390 [203] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG392 [205] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG391 [204] 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 - //SEG393 divr16u::@4 - //SEG394 [206] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG392 divr16u::@4 + //SEG393 [205] (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 - //SEG395 [207] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - //SEG396 [207] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy - //SEG397 divr16u::@2 + //SEG394 [206] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG395 [206] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG396 divr16u::@2 b2: - //SEG398 [208] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG397 [207] (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 - //SEG399 [209] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG398 [208] (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 - //SEG400 [210] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG399 [209] 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 @@ -9563,13 +9530,13 @@ divr16u: { cmp #XSIN_SIZE sta rem+1 - //SEG404 [213] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - //SEG405 [213] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG406 [213] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy - //SEG407 divr16u::@3 + //SEG403 [212] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG404 [212] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG405 [212] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG406 divr16u::@3 b3: - //SEG408 [214] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG407 [213] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG409 [215] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG408 [214] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG410 divr16u::@6 - //SEG411 [216] (word) rem16u#1 ← (word) divr16u::rem#11 - //SEG412 divr16u::@return - //SEG413 [217] return + //SEG409 divr16u::@6 + //SEG410 [215] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG411 divr16u::@return + //SEG412 [216] return rts } -//SEG414 fill +//SEG413 fill // Fill some memory with a value // fill(byte register(X) val) fill: { .label end = 8 .label addr = 2 - //SEG415 [219] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG414 [218] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -9607,28 +9574,28 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG416 [220] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] - //SEG417 [220] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy - //SEG418 fill::@1 + //SEG415 [219] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG416 [219] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG417 fill::@1 b1: - //SEG419 [221] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx + //SEG418 [220] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (addr),y - //SEG420 [222] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG419 [221] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG421 [223] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG420 [222] 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 - //SEG422 fill::@return - //SEG423 [224] return + //SEG421 fill::@return + //SEG422 [223] return rts } .align $100 diff --git a/src/test/ref/examples/scrolllogo/scrolllogo.sym b/src/test/ref/examples/scrolllogo/scrolllogo.sym index 5a801d404..35fecea8e 100644 --- a/src/test/ref/examples/scrolllogo/scrolllogo.sym +++ b/src/test/ref/examples/scrolllogo/scrolllogo.sym @@ -206,7 +206,6 @@ (byte*) main::toD0181_screen (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) (word~) mul16s::$16 $16 zp ZP_WORD:14 4.0 -(word~) mul16s::$5 $5 zp ZP_WORD:2 20.0 (word~) mul16s::$6 $6 zp ZP_WORD:14 4.0 (label) mul16s::@1 (label) mul16s::@2 @@ -438,7 +437,7 @@ (word) xsin_idx#3 xsin_idx zp ZP_WORD:2 11.0 reg byte x [ main::ch#2 main::ch#1 ] -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 mul16s::$5 ] +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 ] reg byte x [ render_logo::screen_idx#19 render_logo::screen_idx#3 render_logo::screen_idx#17 render_logo::screen_idx#2 ] reg byte y [ render_logo::logo_idx#11 render_logo::logo_idx#2 ] reg byte y [ render_logo::logo_idx#10 render_logo::logo_idx#13 render_logo::logo_idx#3 ] diff --git a/src/test/ref/examples/sinplotter/sine-plotter.asm b/src/test/ref/examples/sinplotter/sine-plotter.asm index f3219c8d6..3edabd5a1 100644 --- a/src/test/ref/examples/sinplotter/sine-plotter.asm +++ b/src/test/ref/examples/sinplotter/sine-plotter.asm @@ -327,7 +327,6 @@ sin16s_gen2: { // Fixes offsets introduced by using unsigned multiplication // mul16s(signed word zeropage($17) a) mul16s: { - .label _5 = 2 .label _6 = 6 .label _16 = 6 .label m = $c @@ -345,10 +344,6 @@ mul16s: { lda a+1 bpl b2 lda m+2 - sta _5 - lda m+3 - sta _5+1 - lda m+2 sta _6 lda m+3 sta _6+1 diff --git a/src/test/ref/examples/sinplotter/sine-plotter.cfg b/src/test/ref/examples/sinplotter/sine-plotter.cfg index 910b9c468..4f19afc16 100644 --- a/src/test/ref/examples/sinplotter/sine-plotter.cfg +++ b/src/test/ref/examples/sinplotter/sine-plotter.cfg @@ -184,262 +184,261 @@ mul16s::@6: scope:[mul16s] from mul16s [94] 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::@6 - [95] (word~) mul16s::$5 ← > (dword) mul16s::m#0 - [96] (word~) mul16s::$6 ← > (dword) mul16s::m#0 - [97] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 - [98] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 + [95] (word~) mul16s::$6 ← > (dword) mul16s::m#0 + [96] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 + [97] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 to:mul16s::@1 mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@6 - [99] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) + [98] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) to:mul16s::@2 mul16s::@2: scope:[mul16s] from mul16s::@1 - [100] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 + [99] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 to:mul16s::@return mul16s::@return: scope:[mul16s] from mul16s::@2 - [101] return + [100] return to:@return mul16u: scope:[mul16u] from mul16s mulu16_sel - [102] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 ) - [102] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) - [103] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 + [101] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 ) + [101] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) + [102] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@4 - [104] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) - [104] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) - [104] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) - [105] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 + [103] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) + [103] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) + [103] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) + [104] 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 - [106] return + [105] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [107] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [108] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 + [106] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [107] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 to:mul16u::@7 mul16u::@7: scope:[mul16u] from mul16u::@2 - [109] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [108] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7 - [110] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) - [111] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [112] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [109] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) + [110] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [111] (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 - [113] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 + [112] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 to:sin16s::@4 sin16s::@4: scope:[sin16s] from sin16s - [114] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 + [113] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 to:sin16s::@1 sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 - [115] (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 ) - [115] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) - [116] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 + [114] (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 ) + [114] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) + [115] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 to:sin16s::@5 sin16s::@5: scope:[sin16s] from sin16s::@1 - [117] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 + [116] (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 - [118] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) - [119] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 - [120] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 - [121] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 - [122] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 - [123] call mulu16_sel - [124] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + [117] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) + [118] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 + [119] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 + [120] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 + [121] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 + [122] call mulu16_sel + [123] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 to:sin16s::@8 sin16s::@8: scope:[sin16s] from sin16s::@2 - [125] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 - [126] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - [127] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 - [128] call mulu16_sel - [129] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 + [124] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 + [125] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + [126] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 + [127] call mulu16_sel + [128] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 to:sin16s::@9 sin16s::@9: scope:[sin16s] from sin16s::@8 - [130] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - [131] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - [132] call mulu16_sel - [133] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + [129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + [130] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + [131] call mulu16_sel + [132] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 to:sin16s::@10 sin16s::@10: scope:[sin16s] from sin16s::@9 - [134] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - [135] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 - [136] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - [137] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 - [138] call mulu16_sel - [139] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 + [133] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + [134] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 + [135] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + [136] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 + [137] call mulu16_sel + [138] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 to:sin16s::@11 sin16s::@11: scope:[sin16s] from sin16s::@10 - [140] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - [141] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - [142] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 - [143] call mulu16_sel - [144] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + [139] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + [140] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + [141] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 + [142] call mulu16_sel + [143] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 to:sin16s::@12 sin16s::@12: scope:[sin16s] from sin16s::@11 - [145] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - [146] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [147] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 - [148] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 + [144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + [145] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [146] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 + [147] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 to:sin16s::@6 sin16s::@6: scope:[sin16s] from sin16s::@12 - [149] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 + [148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 to:sin16s::@3 sin16s::@3: scope:[sin16s] from sin16s::@15 sin16s::@6 - [150] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) + [149] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) to:sin16s::@return sin16s::@return: scope:[sin16s] from sin16s::@3 - [151] return + [150] return to:@return sin16s::@15: scope:[sin16s] from sin16s::@12 - [152] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + [151] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 to:sin16s::@3 mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9 - [153] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [153] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) - [153] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 ) - [154] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 - [155] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - [156] call mul16u - [157] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + [152] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [152] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) + [152] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 ) + [153] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 + [154] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + [155] call mul16u + [156] (dword) mul16u::return#3 ← (dword) mul16u::res#2 to:mulu16_sel::@2 mulu16_sel::@2: scope:[mulu16_sel] from mulu16_sel - [158] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - [159] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 - [160] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 + [157] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + [158] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 + [159] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 to:mulu16_sel::@return mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2 - [161] return + [160] return to:@return div32u16u: scope:[div32u16u] from sin16s_gen2 - [162] phi() - [163] call divr16u - [164] (word) divr16u::return#2 ← (word) divr16u::return#0 + [161] phi() + [162] call divr16u + [163] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div32u16u::@2 div32u16u::@2: scope:[div32u16u] from div32u16u - [165] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 - [166] (word) divr16u::rem#4 ← (word) rem16u#1 - [167] call divr16u - [168] (word) divr16u::return#3 ← (word) divr16u::return#0 + [164] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 + [165] (word) divr16u::rem#4 ← (word) rem16u#1 + [166] call divr16u + [167] (word) divr16u::return#3 ← (word) divr16u::return#0 to:div32u16u::@3 div32u16u::@3: scope:[div32u16u] from div32u16u::@2 - [169] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - [170] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 + [168] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + [169] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 to:div32u16u::@return div32u16u::@return: scope:[div32u16u] from div32u16u::@3 - [171] return + [170] return to:@return divr16u: scope:[divr16u] from div32u16u div32u16u::@2 - [172] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) - [172] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) + [171] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) + [171] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [173] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) - [173] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) - [173] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [173] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) - [174] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [175] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [176] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 - [177] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 + [172] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) + [172] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) + [172] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [172] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) + [173] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [174] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [175] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 + [176] 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 - [178] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 + [177] (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 - [179] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [180] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [181] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [182] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 + [178] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [179] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [180] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [181] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [183] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [184] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 + [182] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [183] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [185] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [185] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [186] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [187] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 + [184] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [184] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [185] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [186] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [188] (word) rem16u#1 ← (word) divr16u::rem#11 + [187] (word) rem16u#1 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [189] return + [188] return to:@return bitmap_clear: scope:[bitmap_clear] from main::@10 - [190] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) - [191] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + [189] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) + [190] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 to:bitmap_clear::@1 bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3 - [192] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) - [192] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) + [191] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) + [191] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) to:bitmap_clear::@2 bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2 - [193] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) - [193] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) - [194] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [195] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 - [196] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 - [197] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 + [192] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) + [192] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) + [193] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [194] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 + [195] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 + [196] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 to:bitmap_clear::@3 bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2 - [198] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 - [199] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 + [197] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 + [198] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 to:bitmap_clear::@return bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3 - [200] return + [199] return to:@return bitmap_init: scope:[bitmap_init] from main::@9 - [201] phi() + [200] phi() to:bitmap_init::@1 bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 - [202] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) - [202] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 ) - [203] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 - [204] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [205] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 + [201] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) + [201] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 ) + [202] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 + [203] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [204] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 to:bitmap_init::@2 bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@10 - [206] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 ) - [207] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 - [208] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 + [205] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 ) + [206] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 + [207] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 to:bitmap_init::@3 bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4 - [209] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 ) - [209] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [210] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [211] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 - [212] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 - [213] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 - [214] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 - [215] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 - [216] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [217] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 + [208] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 ) + [208] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [209] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [210] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 + [211] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 + [212] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 + [213] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 + [214] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 + [215] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [216] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 to:bitmap_init::@7 bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@3 - [218] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 + [217] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 to:bitmap_init::@4 bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@7 - [219] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) - [220] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 - [221] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 + [218] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) + [219] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 + [220] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 to:bitmap_init::@return bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 - [222] return + [221] return to:@return bitmap_init::@10: scope:[bitmap_init] from bitmap_init::@1 - [223] phi() + [222] phi() to:bitmap_init::@2 fill: scope:[fill] from main::@8 - [224] phi() + [223] phi() to:fill::@1 fill::@1: scope:[fill] from fill fill::@1 - [225] (byte*) fill::addr#2 ← phi( fill/(const byte*) SCREEN#0 fill::@1/(byte*) fill::addr#1 ) - [226] *((byte*) fill::addr#2) ← (const byte) WHITE#0 - [227] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 - [228] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 + [224] (byte*) fill::addr#2 ← phi( fill/(const byte*) SCREEN#0 fill::@1/(byte*) fill::addr#1 ) + [225] *((byte*) fill::addr#2) ← (const byte) WHITE#0 + [226] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 + [227] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 to:fill::@return fill::@return: scope:[fill] from fill::@1 - [229] return + [228] return to:@return diff --git a/src/test/ref/examples/sinplotter/sine-plotter.log b/src/test/ref/examples/sinplotter/sine-plotter.log index e1318ca85..3af924083 100644 --- a/src/test/ref/examples/sinplotter/sine-plotter.log +++ b/src/test/ref/examples/sinplotter/sine-plotter.log @@ -297,7 +297,6 @@ mul16s::@3: scope:[mul16s] from mul16s::@6 (signed word) mul16s::a#5 ← phi( mul16s::@6/(signed word) mul16s::a#2 ) (signed word) mul16s::b#3 ← phi( mul16s::@6/(signed word) mul16s::b#4 ) (dword) mul16s::m#3 ← phi( mul16s::@6/(dword) mul16s::m#0 ) - (word~) mul16s::$5 ← > (dword) mul16s::m#3 (word~) mul16s::$6 ← > (dword) mul16s::m#3 (word~) mul16s::$7 ← ((word)) (signed word) mul16s::b#3 (word~) mul16s::$8 ← (word~) mul16s::$6 - (word~) mul16s::$7 @@ -312,7 +311,6 @@ mul16s::@2: scope:[mul16s] from mul16s::@1 mul16s::@4 mul16s::@4: scope:[mul16s] from mul16s::@1 (signed word) mul16s::a#3 ← phi( mul16s::@1/(signed word) mul16s::a#4 ) (dword) mul16s::m#5 ← phi( mul16s::@1/(dword) mul16s::m#6 ) - (word~) mul16s::$11 ← > (dword) mul16s::m#5 (word~) mul16s::$12 ← > (dword) mul16s::m#5 (word~) mul16s::$13 ← ((word)) (signed word) mul16s::a#3 (word~) mul16s::$14 ← (word~) mul16s::$12 - (word~) mul16s::$13 @@ -1484,7 +1482,6 @@ SYMBOL TABLE SSA (word~) mul16s::$0 (word~) mul16s::$1 (bool~) mul16s::$10 -(word~) mul16s::$11 (word~) mul16s::$12 (word~) mul16s::$13 (word~) mul16s::$14 @@ -1494,7 +1491,6 @@ SYMBOL TABLE SSA (dword~) mul16s::$2 (bool~) mul16s::$3 (bool~) mul16s::$4 -(word~) mul16s::$5 (word~) mul16s::$6 (word~) mul16s::$7 (word~) mul16s::$8 @@ -1943,12 +1939,12 @@ Inversing boolean not [98] (bool~) divr16u::$9 ← (word) divr16u::rem#6 < (word Inversing boolean not [158] (bool~) mul16u::$3 ← (byte/word~) mul16u::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [157] (bool~) mul16u::$2 ← (byte/word~) mul16u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not [184] (bool~) mul16s::$4 ← (signed word) mul16s::a#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [183] (bool~) mul16s::$3 ← (signed word) mul16s::a#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not [188] (bool~) mul16s::$10 ← (signed word) mul16s::b#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [187] (bool~) mul16s::$9 ← (signed word) mul16s::b#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [262] (bool~) sin16s::$1 ← (dword) sin16s::x#3 < (dword) PI_u4f28#0 from [261] (bool~) sin16s::$0 ← (dword) sin16s::x#3 >= (dword) PI_u4f28#0 -Inversing boolean not [266] (bool~) sin16s::$4 ← (dword) sin16s::x#4 < (dword) PI_HALF_u4f28#0 from [265] (bool~) sin16s::$3 ← (dword) sin16s::x#4 >= (dword) PI_HALF_u4f28#0 -Inversing boolean not [326] (bool~) sin16s::$19 ← (byte) sin16s::isUpper#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [325] (bool~) sin16s::$18 ← (byte) sin16s::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [374] (bool~) bitmap_init::$1 ← (byte) bitmap_init::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [373] (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [394] (bool~) bitmap_init::$9 ← (byte~) bitmap_init::$7 != (byte/signed byte/word/signed word/dword/signed dword) 7 from [393] (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte/signed byte/word/signed word/dword/signed dword) 7 -Inversing boolean not [539] (bool~) render_sine::$10 ← (word) render_sine::xpos#1 != (word/signed word/dword/signed dword) 320 from [538] (bool~) render_sine::$9 ← (word) render_sine::xpos#1 == (word/signed word/dword/signed dword) 320 +Inversing boolean not [260] (bool~) sin16s::$1 ← (dword) sin16s::x#3 < (dword) PI_u4f28#0 from [259] (bool~) sin16s::$0 ← (dword) sin16s::x#3 >= (dword) PI_u4f28#0 +Inversing boolean not [264] (bool~) sin16s::$4 ← (dword) sin16s::x#4 < (dword) PI_HALF_u4f28#0 from [263] (bool~) sin16s::$3 ← (dword) sin16s::x#4 >= (dword) PI_HALF_u4f28#0 +Inversing boolean not [324] (bool~) sin16s::$19 ← (byte) sin16s::isUpper#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [323] (bool~) sin16s::$18 ← (byte) sin16s::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [372] (bool~) bitmap_init::$1 ← (byte) bitmap_init::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [371] (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [392] (bool~) bitmap_init::$9 ← (byte~) bitmap_init::$7 != (byte/signed byte/word/signed word/dword/signed dword) 7 from [391] (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte/signed byte/word/signed word/dword/signed dword) 7 +Inversing boolean not [537] (bool~) render_sine::$10 ← (word) render_sine::xpos#1 != (word/signed word/dword/signed dword) 320 from [536] (bool~) render_sine::$9 ← (word) render_sine::xpos#1 == (word/signed word/dword/signed dword) 320 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 @@ -2155,21 +2151,21 @@ Simple Condition (bool~) mul16u::$0 [154] if((word) mul16u::a#3!=(byte/signed by Simple Condition (bool~) mul16u::$3 [159] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 Simple Condition (bool~) mul16s::$4 [185] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 Simple Condition (bool~) mul16s::$10 [189] 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 [255] if((word) sin16s_gen2::i#1<(word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@1 -Simple Condition (bool~) sin16s::$1 [263] if((dword) sin16s::x#0<(dword) PI_u4f28#0) goto sin16s::@1 -Simple Condition (bool~) sin16s::$4 [267] if((dword) sin16s::x#4<(dword) PI_HALF_u4f28#0) goto sin16s::@2 -Simple Condition (bool~) sin16s::$19 [327] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@3 -Simple Condition (bool~) fill::$1 [361] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -Simple Condition (bool~) bitmap_init::$1 [375] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@2 -Simple Condition (bool~) bitmap_init::$2 [379] if((byte) bitmap_init::x#1!=rangelast(0,255)) goto bitmap_init::@1 -Simple Condition (bool~) bitmap_init::$9 [395] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -Simple Condition (bool~) bitmap_init::$12 [399] if((byte) bitmap_init::y#1!=rangelast(0,255)) goto bitmap_init::@3 -Simple Condition (bool~) bitmap_clear::$1 [415] if((byte) bitmap_clear::x#1!=rangelast(0,199)) goto bitmap_clear::@2 -Simple Condition (bool~) bitmap_clear::$2 [419] if((byte) bitmap_clear::y#1!=rangelast(0,39)) goto bitmap_clear::@1 -Simple Condition (bool~) render_sine::$10 [540] if((word) render_sine::xpos#1!=(word/signed word/dword/signed dword) 320) goto render_sine::@2 -Simple Condition (bool~) render_sine::$11 [544] if((word) render_sine::sin_idx#1<(word) SIN_SIZE#0) goto render_sine::@1 -Simple Condition (bool~) wrap_y::$0 [551] if((signed word) wrap_y::y#4>=(byte/word/signed word/dword/signed dword) 200) goto wrap_y::@2 -Simple Condition (bool~) wrap_y::$1 [556] if((signed word) wrap_y::y#6<(byte/signed byte/word/signed word/dword/signed dword) 0) goto wrap_y::@5 +Simple Condition (bool~) sin16s_gen2::$11 [253] if((word) sin16s_gen2::i#1<(word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@1 +Simple Condition (bool~) sin16s::$1 [261] if((dword) sin16s::x#0<(dword) PI_u4f28#0) goto sin16s::@1 +Simple Condition (bool~) sin16s::$4 [265] if((dword) sin16s::x#4<(dword) PI_HALF_u4f28#0) goto sin16s::@2 +Simple Condition (bool~) sin16s::$19 [325] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@3 +Simple Condition (bool~) fill::$1 [359] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 +Simple Condition (bool~) bitmap_init::$1 [373] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@2 +Simple Condition (bool~) bitmap_init::$2 [377] if((byte) bitmap_init::x#1!=rangelast(0,255)) goto bitmap_init::@1 +Simple Condition (bool~) bitmap_init::$9 [393] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 +Simple Condition (bool~) bitmap_init::$12 [397] if((byte) bitmap_init::y#1!=rangelast(0,255)) goto bitmap_init::@3 +Simple Condition (bool~) bitmap_clear::$1 [413] if((byte) bitmap_clear::x#1!=rangelast(0,199)) goto bitmap_clear::@2 +Simple Condition (bool~) bitmap_clear::$2 [417] if((byte) bitmap_clear::y#1!=rangelast(0,39)) goto bitmap_clear::@1 +Simple Condition (bool~) render_sine::$10 [538] if((word) render_sine::xpos#1!=(word/signed word/dword/signed dword) 320) goto render_sine::@2 +Simple Condition (bool~) render_sine::$11 [542] if((word) render_sine::sin_idx#1<(word) SIN_SIZE#0) goto render_sine::@1 +Simple Condition (bool~) wrap_y::$0 [549] if((signed word) wrap_y::y#4>=(byte/word/signed word/dword/signed dword) 200) goto wrap_y::@2 +Simple Condition (bool~) wrap_y::$1 [554] if((signed word) wrap_y::y#6<(byte/signed byte/word/signed word/dword/signed dword) 0) goto wrap_y::@5 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 @@ -2340,7 +2336,7 @@ Successful SSA optimization Pass2ConstantIdentification Constant (const byte) main::toD0181_return#0 = main::toD0181_$3#0|main::toD0181_$7#0 Successful SSA optimization Pass2ConstantIdentification if() condition always true - replacing block destination [44] if((const signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 -if() condition always true - replacing block destination [184] if(true) goto main::@2 +if() condition always true - replacing block destination [182] if(true) goto main::@2 Successful SSA optimization Pass2ConstantIfs Fixing inline constructor with bitmap_clear::$3 ← *(bitmap_plot_yhi#0 + 0) w= *(bitmap_plot_ylo#0 + 0) Fixing inline constructor with bitmap_plot::$3 ← *(bitmap_plot_yhi#0 + bitmap_plot::y#2) w= *(bitmap_plot_ylo#0 + bitmap_plot::y#2) @@ -2355,7 +2351,6 @@ Eliminating Noop Cast (signed word~) sin16s::$20 ← ((signed word)) (word) sin1 Eliminating Noop Cast (byte*) bitmap_clear::bitmap#0 ← ((byte*)) (word~) bitmap_clear::$3 Eliminating Noop Cast (byte*) bitmap_plot::plotter#0 ← ((byte*)) (word~) bitmap_plot::$3 Successful SSA optimization Pass2NopCastElimination -Eliminating variable (word~) mul16s::$11 from unused block mul16s::@4 Eliminating variable (word~) mul16s::$12 from unused block mul16s::@4 Eliminating variable (word~) mul16s::$17 from unused block mul16s::@4 Eliminating variable (dword) mul16s::m#2 from unused block mul16s::@4 @@ -2525,9 +2520,9 @@ Calls in [main] to fill:15 bitmap_init:17 bitmap_clear:19 sin16s_gen2:21 render_ Calls in [render_sine] to wrap_y:32 bitmap_plot:39 wrap_y:45 bitmap_plot:52 Calls in [sin16s_gen2] to div32u16u:84 sin16s:89 mul16s:92 Calls in [mul16s] to mul16u:107 -Calls in [sin16s] to mulu16_sel:152 mulu16_sel:159 mulu16_sel:164 mulu16_sel:172 mulu16_sel:179 -Calls in [mulu16_sel] to mul16u:197 -Calls in [div32u16u] to divr16u:204 divr16u:209 +Calls in [sin16s] to mulu16_sel:151 mulu16_sel:158 mulu16_sel:163 mulu16_sel:171 mulu16_sel:178 +Calls in [mulu16_sel] to mul16u:196 +Calls in [div32u16u] to divr16u:203 divr16u:208 Created 45 initial phi equivalence classes Coalesced [31] wrap_y::y#10 ← wrap_y::y#0 @@ -2546,57 +2541,57 @@ Coalesced [82] wrap_y::y#13 ← wrap_y::y#2 Coalesced [103] sin16s_gen2::x#5 ← sin16s_gen2::x#1 Coalesced [104] sin16s_gen2::sintab#7 ← sin16s_gen2::sintab#0 Coalesced [105] sin16s_gen2::i#5 ← sin16s_gen2::i#1 -Coalesced [115] mul16s::m#7 ← mul16s::m#1 -Coalesced [119] mul16s::m#8 ← mul16s::m#0 -Coalesced [122] mul16u::a#10 ← mul16u::a#6 -Coalesced [123] mul16u::mb#6 ← mul16u::mb#0 -Coalesced [130] mul16u::res#9 ← mul16u::res#1 -Coalesced [134] mul16u::a#11 ← mul16u::a#0 -Coalesced [135] mul16u::res#7 ← mul16u::res#6 -Coalesced [136] mul16u::mb#7 ← mul16u::mb#1 -Coalesced (already) [137] mul16u::res#8 ← mul16u::res#2 -Coalesced [140] sin16s::x#9 ← sin16s::x#1 -Coalesced [144] sin16s::x#11 ← sin16s::x#2 -Coalesced [150] mulu16_sel::v1#8 ← mulu16_sel::v1#0 -Coalesced [151] mulu16_sel::v2#8 ← mulu16_sel::v2#0 -Coalesced [157] mulu16_sel::v1#9 ← mulu16_sel::v1#1 -Coalesced [158] mulu16_sel::v2#9 ← mulu16_sel::v2#1 -Coalesced [163] mulu16_sel::v1#10 ← mulu16_sel::v1#2 -Coalesced [170] mulu16_sel::v1#6 ← mulu16_sel::v1#3 -Coalesced [171] mulu16_sel::v2#6 ← mulu16_sel::v2#3 -Coalesced [177] mulu16_sel::v1#7 ← mulu16_sel::v1#4 -Coalesced [178] mulu16_sel::v2#7 ← mulu16_sel::v2#4 -Coalesced [186] sin16s::return#6 ← sin16s::sinx#1 -Coalesced [190] sin16s::x#10 ← sin16s::x#4 -Coalesced [191] sin16s::x#8 ← sin16s::x#0 -Coalesced [195] mul16u::b#3 ← mul16u::b#1 -Coalesced [196] mul16u::a#9 ← mul16u::a#2 -Coalesced [208] divr16u::rem#12 ← divr16u::rem#4 -Coalesced [215] divr16u::rem#13 ← divr16u::rem#10 -Coalesced [216] divr16u::dividend#9 ← divr16u::dividend#5 -Coalesced [223] divr16u::rem#16 ← divr16u::rem#1 -Coalesced [230] divr16u::rem#18 ← divr16u::rem#2 -Coalesced [231] divr16u::return#8 ← divr16u::quotient#2 -Coalesced [237] divr16u::rem#14 ← divr16u::rem#11 -Coalesced [238] divr16u::dividend#10 ← divr16u::dividend#0 -Coalesced [239] divr16u::quotient#9 ← divr16u::return#0 -Coalesced [240] divr16u::i#7 ← divr16u::i#1 -Coalesced [241] divr16u::rem#17 ← divr16u::rem#6 -Coalesced [242] divr16u::return#7 ← divr16u::quotient#1 -Coalesced [243] divr16u::rem#15 ← divr16u::rem#0 -Coalesced [247] bitmap_clear::bitmap#7 ← bitmap_clear::bitmap#3 -Coalesced [256] bitmap_clear::bitmap#6 ← bitmap_clear::bitmap#1 -Coalesced [257] bitmap_clear::y#5 ← bitmap_clear::y#1 -Coalesced (already) [258] bitmap_clear::bitmap#8 ← bitmap_clear::bitmap#1 -Coalesced [259] bitmap_clear::x#3 ← bitmap_clear::x#1 -Coalesced [279] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 -Coalesced [284] bitmap_init::y#5 ← bitmap_init::y#1 -Coalesced [285] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 -Coalesced (already) [286] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 -Coalesced [287] bitmap_init::bits#5 ← bitmap_init::bits#4 -Coalesced [288] bitmap_init::x#5 ← bitmap_init::x#1 -Coalesced [289] bitmap_init::bits#6 ← bitmap_init::bits#1 -Coalesced [296] fill::addr#3 ← fill::addr#1 +Coalesced [114] mul16s::m#7 ← mul16s::m#1 +Coalesced [118] mul16s::m#8 ← mul16s::m#0 +Coalesced [121] mul16u::a#10 ← mul16u::a#6 +Coalesced [122] mul16u::mb#6 ← mul16u::mb#0 +Coalesced [129] mul16u::res#9 ← mul16u::res#1 +Coalesced [133] mul16u::a#11 ← mul16u::a#0 +Coalesced [134] mul16u::res#7 ← mul16u::res#6 +Coalesced [135] mul16u::mb#7 ← mul16u::mb#1 +Coalesced (already) [136] mul16u::res#8 ← mul16u::res#2 +Coalesced [139] sin16s::x#9 ← sin16s::x#1 +Coalesced [143] sin16s::x#11 ← sin16s::x#2 +Coalesced [149] mulu16_sel::v1#8 ← mulu16_sel::v1#0 +Coalesced [150] mulu16_sel::v2#8 ← mulu16_sel::v2#0 +Coalesced [156] mulu16_sel::v1#9 ← mulu16_sel::v1#1 +Coalesced [157] mulu16_sel::v2#9 ← mulu16_sel::v2#1 +Coalesced [162] mulu16_sel::v1#10 ← mulu16_sel::v1#2 +Coalesced [169] mulu16_sel::v1#6 ← mulu16_sel::v1#3 +Coalesced [170] mulu16_sel::v2#6 ← mulu16_sel::v2#3 +Coalesced [176] mulu16_sel::v1#7 ← mulu16_sel::v1#4 +Coalesced [177] mulu16_sel::v2#7 ← mulu16_sel::v2#4 +Coalesced [185] sin16s::return#6 ← sin16s::sinx#1 +Coalesced [189] sin16s::x#10 ← sin16s::x#4 +Coalesced [190] sin16s::x#8 ← sin16s::x#0 +Coalesced [194] mul16u::b#3 ← mul16u::b#1 +Coalesced [195] mul16u::a#9 ← mul16u::a#2 +Coalesced [207] divr16u::rem#12 ← divr16u::rem#4 +Coalesced [214] divr16u::rem#13 ← divr16u::rem#10 +Coalesced [215] divr16u::dividend#9 ← divr16u::dividend#5 +Coalesced [222] divr16u::rem#16 ← divr16u::rem#1 +Coalesced [229] divr16u::rem#18 ← divr16u::rem#2 +Coalesced [230] divr16u::return#8 ← divr16u::quotient#2 +Coalesced [236] divr16u::rem#14 ← divr16u::rem#11 +Coalesced [237] divr16u::dividend#10 ← divr16u::dividend#0 +Coalesced [238] divr16u::quotient#9 ← divr16u::return#0 +Coalesced [239] divr16u::i#7 ← divr16u::i#1 +Coalesced [240] divr16u::rem#17 ← divr16u::rem#6 +Coalesced [241] divr16u::return#7 ← divr16u::quotient#1 +Coalesced [242] divr16u::rem#15 ← divr16u::rem#0 +Coalesced [246] bitmap_clear::bitmap#7 ← bitmap_clear::bitmap#3 +Coalesced [255] bitmap_clear::bitmap#6 ← bitmap_clear::bitmap#1 +Coalesced [256] bitmap_clear::y#5 ← bitmap_clear::y#1 +Coalesced (already) [257] bitmap_clear::bitmap#8 ← bitmap_clear::bitmap#1 +Coalesced [258] bitmap_clear::x#3 ← bitmap_clear::x#1 +Coalesced [278] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 +Coalesced [283] bitmap_init::y#5 ← bitmap_init::y#1 +Coalesced [284] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 +Coalesced (already) [285] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 +Coalesced [286] bitmap_init::bits#5 ← bitmap_init::bits#4 +Coalesced [287] bitmap_init::x#5 ← bitmap_init::x#1 +Coalesced [288] bitmap_init::bits#6 ← bitmap_init::bits#1 +Coalesced [295] fill::addr#3 ← fill::addr#1 Coalesced down to 31 phi equivalence classes Culled Empty Block (label) render_sine::@3 Culled Empty Block (label) render_sine::@9 @@ -2820,264 +2815,263 @@ mul16s::@6: scope:[mul16s] from mul16s [94] 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::@6 - [95] (word~) mul16s::$5 ← > (dword) mul16s::m#0 - [96] (word~) mul16s::$6 ← > (dword) mul16s::m#0 - [97] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 - [98] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 + [95] (word~) mul16s::$6 ← > (dword) mul16s::m#0 + [96] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 + [97] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 to:mul16s::@1 mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@6 - [99] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) + [98] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) to:mul16s::@2 mul16s::@2: scope:[mul16s] from mul16s::@1 - [100] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 + [99] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 to:mul16s::@return mul16s::@return: scope:[mul16s] from mul16s::@2 - [101] return + [100] return to:@return mul16u: scope:[mul16u] from mul16s mulu16_sel - [102] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 ) - [102] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) - [103] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 + [101] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 ) + [101] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) + [102] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@4 - [104] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) - [104] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) - [104] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) - [105] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 + [103] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) + [103] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) + [103] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) + [104] 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 - [106] return + [105] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [107] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [108] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 + [106] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [107] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 to:mul16u::@7 mul16u::@7: scope:[mul16u] from mul16u::@2 - [109] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [108] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7 - [110] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) - [111] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [112] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [109] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) + [110] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [111] (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 - [113] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 + [112] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 to:sin16s::@4 sin16s::@4: scope:[sin16s] from sin16s - [114] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 + [113] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 to:sin16s::@1 sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 - [115] (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 ) - [115] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) - [116] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 + [114] (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 ) + [114] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) + [115] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 to:sin16s::@5 sin16s::@5: scope:[sin16s] from sin16s::@1 - [117] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 + [116] (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 - [118] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) - [119] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 - [120] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 - [121] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 - [122] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 - [123] call mulu16_sel - [124] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + [117] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) + [118] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 + [119] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 + [120] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 + [121] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 + [122] call mulu16_sel + [123] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 to:sin16s::@8 sin16s::@8: scope:[sin16s] from sin16s::@2 - [125] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 - [126] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - [127] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 - [128] call mulu16_sel - [129] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 + [124] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 + [125] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + [126] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 + [127] call mulu16_sel + [128] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 to:sin16s::@9 sin16s::@9: scope:[sin16s] from sin16s::@8 - [130] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - [131] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - [132] call mulu16_sel - [133] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + [129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + [130] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + [131] call mulu16_sel + [132] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 to:sin16s::@10 sin16s::@10: scope:[sin16s] from sin16s::@9 - [134] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - [135] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 - [136] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - [137] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 - [138] call mulu16_sel - [139] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 + [133] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + [134] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 + [135] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + [136] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 + [137] call mulu16_sel + [138] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 to:sin16s::@11 sin16s::@11: scope:[sin16s] from sin16s::@10 - [140] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - [141] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - [142] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 - [143] call mulu16_sel - [144] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + [139] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + [140] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + [141] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 + [142] call mulu16_sel + [143] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 to:sin16s::@12 sin16s::@12: scope:[sin16s] from sin16s::@11 - [145] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - [146] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [147] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 - [148] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 + [144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + [145] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [146] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 + [147] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 to:sin16s::@6 sin16s::@6: scope:[sin16s] from sin16s::@12 - [149] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 + [148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 to:sin16s::@3 sin16s::@3: scope:[sin16s] from sin16s::@15 sin16s::@6 - [150] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) + [149] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) to:sin16s::@return sin16s::@return: scope:[sin16s] from sin16s::@3 - [151] return + [150] return to:@return sin16s::@15: scope:[sin16s] from sin16s::@12 - [152] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + [151] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 to:sin16s::@3 mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9 - [153] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [153] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) - [153] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 ) - [154] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 - [155] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - [156] call mul16u - [157] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + [152] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [152] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) + [152] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 ) + [153] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 + [154] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + [155] call mul16u + [156] (dword) mul16u::return#3 ← (dword) mul16u::res#2 to:mulu16_sel::@2 mulu16_sel::@2: scope:[mulu16_sel] from mulu16_sel - [158] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - [159] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 - [160] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 + [157] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + [158] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 + [159] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 to:mulu16_sel::@return mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2 - [161] return + [160] return to:@return div32u16u: scope:[div32u16u] from sin16s_gen2 - [162] phi() - [163] call divr16u - [164] (word) divr16u::return#2 ← (word) divr16u::return#0 + [161] phi() + [162] call divr16u + [163] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div32u16u::@2 div32u16u::@2: scope:[div32u16u] from div32u16u - [165] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 - [166] (word) divr16u::rem#4 ← (word) rem16u#1 - [167] call divr16u - [168] (word) divr16u::return#3 ← (word) divr16u::return#0 + [164] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 + [165] (word) divr16u::rem#4 ← (word) rem16u#1 + [166] call divr16u + [167] (word) divr16u::return#3 ← (word) divr16u::return#0 to:div32u16u::@3 div32u16u::@3: scope:[div32u16u] from div32u16u::@2 - [169] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - [170] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 + [168] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + [169] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 to:div32u16u::@return div32u16u::@return: scope:[div32u16u] from div32u16u::@3 - [171] return + [170] return to:@return divr16u: scope:[divr16u] from div32u16u div32u16u::@2 - [172] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) - [172] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) + [171] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) + [171] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [173] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) - [173] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) - [173] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [173] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) - [174] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [175] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [176] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 - [177] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 + [172] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) + [172] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) + [172] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [172] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) + [173] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [174] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [175] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 + [176] 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 - [178] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 + [177] (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 - [179] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [180] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [181] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [182] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 + [178] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [179] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [180] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [181] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [183] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [184] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 + [182] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [183] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [185] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [185] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [186] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [187] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 + [184] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [184] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [185] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [186] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [188] (word) rem16u#1 ← (word) divr16u::rem#11 + [187] (word) rem16u#1 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [189] return + [188] return to:@return bitmap_clear: scope:[bitmap_clear] from main::@10 - [190] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) - [191] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + [189] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) + [190] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 to:bitmap_clear::@1 bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3 - [192] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) - [192] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) + [191] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) + [191] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) to:bitmap_clear::@2 bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2 - [193] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) - [193] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) - [194] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [195] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 - [196] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 - [197] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 + [192] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) + [192] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) + [193] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [194] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 + [195] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 + [196] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 to:bitmap_clear::@3 bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2 - [198] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 - [199] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 + [197] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 + [198] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 to:bitmap_clear::@return bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3 - [200] return + [199] return to:@return bitmap_init: scope:[bitmap_init] from main::@9 - [201] phi() + [200] phi() to:bitmap_init::@1 bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 - [202] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) - [202] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 ) - [203] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 - [204] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [205] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 + [201] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) + [201] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 ) + [202] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 + [203] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [204] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 to:bitmap_init::@2 bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@10 - [206] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 ) - [207] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 - [208] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 + [205] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 ) + [206] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 + [207] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 to:bitmap_init::@3 bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4 - [209] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 ) - [209] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [210] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [211] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 - [212] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 - [213] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 - [214] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 - [215] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 - [216] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [217] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 + [208] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 ) + [208] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [209] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [210] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 + [211] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 + [212] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 + [213] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 + [214] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 + [215] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [216] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 to:bitmap_init::@7 bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@3 - [218] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 + [217] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 to:bitmap_init::@4 bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@7 - [219] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) - [220] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 - [221] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 + [218] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) + [219] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 + [220] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 to:bitmap_init::@return bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 - [222] return + [221] return to:@return bitmap_init::@10: scope:[bitmap_init] from bitmap_init::@1 - [223] phi() + [222] phi() to:bitmap_init::@2 fill: scope:[fill] from main::@8 - [224] phi() + [223] phi() to:fill::@1 fill::@1: scope:[fill] from fill fill::@1 - [225] (byte*) fill::addr#2 ← phi( fill/(const byte*) SCREEN#0 fill::@1/(byte*) fill::addr#1 ) - [226] *((byte*) fill::addr#2) ← (const byte) WHITE#0 - [227] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 - [228] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 + [224] (byte*) fill::addr#2 ← phi( fill/(const byte*) SCREEN#0 fill::@1/(byte*) fill::addr#1 ) + [225] *((byte*) fill::addr#2) ← (const byte) WHITE#0 + [226] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 + [227] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 to:fill::@return fill::@return: scope:[fill] from fill::@1 - [229] return + [228] return to:@return @@ -3291,7 +3285,6 @@ VARIABLE REGISTER WEIGHTS (byte) main::vicSelectGfxBank1_toDd001_return (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) (word~) mul16s::$16 4.0 -(word~) mul16s::$5 20.0 (word~) mul16s::$6 4.0 (signed word) mul16s::a (signed word) mul16s::a#0 2.6 @@ -3500,7 +3493,6 @@ Added variable sin16s_gen2::$5 to zero page equivalence class [ sin16s_gen2::$5 Added variable sin16s_gen2::$6 to zero page equivalence class [ sin16s_gen2::$6 ] Added variable sin16s_gen2::$8 to zero page equivalence class [ sin16s_gen2::$8 ] Added variable mul16u::return#2 to zero page equivalence class [ mul16u::return#2 ] -Added variable mul16s::$5 to zero page equivalence class [ mul16s::$5 ] Added variable mul16s::$6 to zero page equivalence class [ mul16s::$6 ] Added variable mul16s::$16 to zero page equivalence class [ mul16s::$16 ] Added variable mul16s::return#0 to zero page equivalence class [ mul16s::return#0 ] @@ -3594,7 +3586,6 @@ Complete equivalence classes [ sin16s_gen2::$6 ] [ sin16s_gen2::$8 ] [ mul16u::return#2 ] -[ mul16s::$5 ] [ mul16s::$6 ] [ mul16s::$16 ] [ mul16s::return#0 ] @@ -3687,44 +3678,43 @@ Allocated zp ZP_DWORD:105 [ sin16s_gen2::$5 ] Allocated zp ZP_WORD:109 [ sin16s_gen2::$6 ] Allocated zp ZP_WORD:111 [ sin16s_gen2::$8 ] Allocated zp ZP_DWORD:113 [ mul16u::return#2 ] -Allocated zp ZP_WORD:117 [ mul16s::$5 ] -Allocated zp ZP_WORD:119 [ mul16s::$6 ] -Allocated zp ZP_WORD:121 [ mul16s::$16 ] -Allocated zp ZP_DWORD:123 [ mul16s::return#0 ] -Allocated zp ZP_BYTE:127 [ mul16u::$1 ] -Allocated zp ZP_DWORD:128 [ sin16s::$6 ] -Allocated zp ZP_WORD:132 [ sin16s::x1#0 ] -Allocated zp ZP_WORD:134 [ mulu16_sel::return#0 ] -Allocated zp ZP_WORD:136 [ sin16s::x2#0 ] -Allocated zp ZP_WORD:138 [ mulu16_sel::return#1 ] -Allocated zp ZP_WORD:140 [ sin16s::x3#0 ] -Allocated zp ZP_WORD:142 [ mulu16_sel::return#2 ] -Allocated zp ZP_WORD:144 [ sin16s::x3_6#0 ] -Allocated zp ZP_WORD:146 [ sin16s::usinx#0 ] -Allocated zp ZP_WORD:148 [ mulu16_sel::return#10 ] -Allocated zp ZP_WORD:150 [ sin16s::x4#0 ] -Allocated zp ZP_WORD:152 [ mulu16_sel::return#11 ] -Allocated zp ZP_WORD:154 [ sin16s::x5#0 ] -Allocated zp ZP_WORD:156 [ sin16s::x5_128#0 ] -Allocated zp ZP_WORD:158 [ sin16s::usinx#1 ] -Allocated zp ZP_DWORD:160 [ mul16u::return#3 ] -Allocated zp ZP_DWORD:164 [ mulu16_sel::$0 ] -Allocated zp ZP_DWORD:168 [ mulu16_sel::$1 ] -Allocated zp ZP_WORD:172 [ mulu16_sel::return#12 ] -Allocated zp ZP_WORD:174 [ divr16u::return#2 ] -Allocated zp ZP_WORD:176 [ div32u16u::quotient_hi#0 ] -Allocated zp ZP_WORD:178 [ divr16u::return#3 ] -Allocated zp ZP_WORD:180 [ div32u16u::quotient_lo#0 ] -Allocated zp ZP_DWORD:182 [ div32u16u::return#0 ] -Allocated zp ZP_BYTE:186 [ divr16u::$1 ] -Allocated zp ZP_BYTE:187 [ divr16u::$2 ] -Allocated zp ZP_WORD:188 [ rem16u#1 ] -Allocated zp ZP_WORD:190 [ bitmap_clear::$3 ] -Allocated zp ZP_BYTE:192 [ bitmap_init::$3 ] -Allocated zp ZP_BYTE:193 [ bitmap_init::$4 ] -Allocated zp ZP_BYTE:194 [ bitmap_init::$5 ] -Allocated zp ZP_BYTE:195 [ bitmap_init::$6 ] -Allocated zp ZP_BYTE:196 [ bitmap_init::$7 ] +Allocated zp ZP_WORD:117 [ mul16s::$6 ] +Allocated zp ZP_WORD:119 [ mul16s::$16 ] +Allocated zp ZP_DWORD:121 [ mul16s::return#0 ] +Allocated zp ZP_BYTE:125 [ mul16u::$1 ] +Allocated zp ZP_DWORD:126 [ sin16s::$6 ] +Allocated zp ZP_WORD:130 [ sin16s::x1#0 ] +Allocated zp ZP_WORD:132 [ mulu16_sel::return#0 ] +Allocated zp ZP_WORD:134 [ sin16s::x2#0 ] +Allocated zp ZP_WORD:136 [ mulu16_sel::return#1 ] +Allocated zp ZP_WORD:138 [ sin16s::x3#0 ] +Allocated zp ZP_WORD:140 [ mulu16_sel::return#2 ] +Allocated zp ZP_WORD:142 [ sin16s::x3_6#0 ] +Allocated zp ZP_WORD:144 [ sin16s::usinx#0 ] +Allocated zp ZP_WORD:146 [ mulu16_sel::return#10 ] +Allocated zp ZP_WORD:148 [ sin16s::x4#0 ] +Allocated zp ZP_WORD:150 [ mulu16_sel::return#11 ] +Allocated zp ZP_WORD:152 [ sin16s::x5#0 ] +Allocated zp ZP_WORD:154 [ sin16s::x5_128#0 ] +Allocated zp ZP_WORD:156 [ sin16s::usinx#1 ] +Allocated zp ZP_DWORD:158 [ mul16u::return#3 ] +Allocated zp ZP_DWORD:162 [ mulu16_sel::$0 ] +Allocated zp ZP_DWORD:166 [ mulu16_sel::$1 ] +Allocated zp ZP_WORD:170 [ mulu16_sel::return#12 ] +Allocated zp ZP_WORD:172 [ divr16u::return#2 ] +Allocated zp ZP_WORD:174 [ div32u16u::quotient_hi#0 ] +Allocated zp ZP_WORD:176 [ divr16u::return#3 ] +Allocated zp ZP_WORD:178 [ div32u16u::quotient_lo#0 ] +Allocated zp ZP_DWORD:180 [ div32u16u::return#0 ] +Allocated zp ZP_BYTE:184 [ divr16u::$1 ] +Allocated zp ZP_BYTE:185 [ divr16u::$2 ] +Allocated zp ZP_WORD:186 [ rem16u#1 ] +Allocated zp ZP_WORD:188 [ bitmap_clear::$3 ] +Allocated zp ZP_BYTE:190 [ bitmap_init::$3 ] +Allocated zp ZP_BYTE:191 [ bitmap_init::$4 ] +Allocated zp ZP_BYTE:192 [ bitmap_init::$5 ] +Allocated zp ZP_BYTE:193 [ bitmap_init::$6 ] +Allocated zp ZP_BYTE:194 [ bitmap_init::$7 ] INITIAL ASM //SEG0 File Comments @@ -3765,7 +3755,7 @@ INITIAL ASM .label BITMAP = $2000 .const SIN_SIZE = $200 .label sin2 = $1400 - .label rem16u = $bc + .label rem16u = $ba //SEG3 @begin bbegin: jmp b29 @@ -3836,7 +3826,7 @@ main: { lda #toD0181_return sta D018 //SEG28 [15] call fill - //SEG29 [224] phi from main::@8 to fill [phi:main::@8->fill] + //SEG29 [223] phi from main::@8 to fill [phi:main::@8->fill] fill_from_b8: jsr fill //SEG30 [16] phi from main::@8 to main::@9 [phi:main::@8->main::@9] @@ -3845,7 +3835,7 @@ main: { //SEG31 main::@9 b9: //SEG32 [17] call bitmap_init - //SEG33 [201] phi from main::@9 to bitmap_init [phi:main::@9->bitmap_init] + //SEG33 [200] phi from main::@9 to bitmap_init [phi:main::@9->bitmap_init] bitmap_init_from_b9: jsr bitmap_init //SEG34 [18] phi from main::@9 to main::@10 [phi:main::@9->main::@10] @@ -4214,7 +4204,7 @@ sin16s_gen2: { .label x = $b .label i = $11 //SEG128 [71] call div32u16u - //SEG129 [162] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG129 [161] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] div32u16u_from_sin16s_gen2: jsr div32u16u //SEG130 [72] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 -- vduz1=vduz2 @@ -4381,11 +4371,10 @@ sin16s_gen2: { // Fixes offsets introduced by using unsigned multiplication // mul16s(signed word zeropage($63) a) mul16s: { - .label _5 = $75 - .label _6 = $77 - .label _16 = $79 + .label _6 = $75 + .label _16 = $77 .label m = $13 - .label return = $7b + .label return = $79 .label a = $63 .label return_2 = $65 //SEG161 [90] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 @@ -4394,10 +4383,10 @@ mul16s: { lda a+1 sta mul16u.a+1 //SEG162 [91] call mul16u - //SEG163 [102] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG163 [101] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //SEG164 [102] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy - //SEG165 [102] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 + //SEG164 [101] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG165 [101] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl @@ -4430,17 +4419,12 @@ mul16s: { jmp b3 //SEG170 mul16s::@3 b3: - //SEG171 [95] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 - lda m+2 - sta _5 - lda m+3 - sta _5+1 - //SEG172 [96] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG171 [95] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG173 [97] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz2_minus_vwuc1 + //SEG172 [96] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz2_minus_vwuc1 lda _6 sec sbc #sin16s_gen2.ampl sta _16+1 - //SEG174 [98] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG173 [97] (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 - //SEG175 [99] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG174 [98] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] b1_from_b3: b1_from_b6: - //SEG176 [99] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG175 [98] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy jmp b1 - //SEG177 mul16s::@1 + //SEG176 mul16s::@1 b1: jmp b2 - //SEG178 mul16s::@2 + //SEG177 mul16s::@2 b2: - //SEG179 [100] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz2 + //SEG178 [99] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz2 lda m sta return lda m+1 @@ -4473,23 +4457,23 @@ mul16s: { lda m+3 sta return+3 jmp breturn - //SEG180 mul16s::@return + //SEG179 mul16s::@return breturn: - //SEG181 [101] return + //SEG180 [100] return rts } -//SEG182 mul16u +//SEG181 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage($19) a, word zeropage($17) b) mul16u: { - .label _1 = $7f + .label _1 = $7d .label mb = $1f .label a = $19 .label res = $1b .label return = $71 .label b = $17 - .label return_3 = $a0 - //SEG183 [103] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + .label return_3 = $9e + //SEG182 [102] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -4497,44 +4481,44 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG184 [104] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG183 [103] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG185 [104] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG186 [104] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG184 [103] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG185 [103] 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 - //SEG187 [104] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG186 [103] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG188 mul16u::@1 + //SEG187 mul16u::@1 b1: - //SEG189 [105] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG188 [104] 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 - //SEG190 mul16u::@return + //SEG189 mul16u::@return breturn: - //SEG191 [106] return + //SEG190 [105] return rts - //SEG192 mul16u::@2 + //SEG191 mul16u::@2 b2: - //SEG193 [107] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vwuz2_band_vbuc1 + //SEG192 [106] (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 - //SEG194 [108] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuz1_eq_0_then_la1 + //SEG193 [107] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b4_from_b2 jmp b7 - //SEG195 mul16u::@7 + //SEG194 mul16u::@7 b7: - //SEG196 [109] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG195 [108] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -4548,52 +4532,52 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG197 [110] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG196 [109] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG198 [110] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG197 [109] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG199 mul16u::@4 + //SEG198 mul16u::@4 b4: - //SEG200 [111] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG199 [110] (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 - //SEG201 [112] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG200 [111] (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 - //SEG202 [104] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG201 [103] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //SEG203 [104] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG204 [104] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG205 [104] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG202 [103] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG203 [103] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG204 [103] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG206 sin16s +//SEG205 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($24) x) sin16s: { - .label _6 = $80 + .label _6 = $7e .label x = $24 .label return = $61 - .label x1 = $84 - .label x2 = $88 - .label x3 = $8c - .label x3_6 = $90 - .label usinx = $92 - .label x4 = $96 - .label x5 = $9a - .label x5_128 = $9c - .label usinx_1 = $9e + .label x1 = $82 + .label x2 = $86 + .label x3 = $8a + .label x3_6 = $8e + .label usinx = $90 + .label x4 = $94 + .label x5 = $98 + .label x5_128 = $9a + .label usinx_1 = $9c .label return_1 = $28 .label sinx = $28 .label isUpper = $23 .label return_5 = $28 - //SEG207 [113] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG206 [112] 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 @@ -4611,9 +4595,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG208 sin16s::@4 + //SEG207 sin16s::@4 b4: - //SEG209 [114] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG208 [113] (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 - //SEG210 [115] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG209 [114] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //SEG211 [115] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG210 [114] 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 - //SEG212 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG211 [114] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG213 [115] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG212 [114] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG214 [115] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG213 [114] 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 - //SEG215 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG214 [114] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG216 sin16s::@1 + //SEG215 sin16s::@1 b1: - //SEG217 [116] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG216 [115] 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 @@ -4661,9 +4645,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG218 sin16s::@5 + //SEG217 sin16s::@5 b5: - //SEG219 [117] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG218 [116] (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 - //SEG220 [118] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG219 [117] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG221 [118] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG220 [117] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG222 sin16s::@2 + //SEG221 sin16s::@2 b2: - //SEG223 [119] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz2_rol_3 + //SEG222 [118] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz2_rol_3 lda x sta _6 lda x+1 @@ -4701,107 +4685,107 @@ sin16s: { rol _6+3 dey bne !- - //SEG224 [120] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG223 [119] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG225 [121] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG224 [120] (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 - //SEG226 [122] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG225 [121] (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 - //SEG227 [123] call mulu16_sel - //SEG228 [153] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG226 [122] call mulu16_sel + //SEG227 [152] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG229 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG228 [152] 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 - //SEG230 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG231 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG229 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG230 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG232 [124] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG231 [123] (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 b8 - //SEG233 sin16s::@8 + //SEG232 sin16s::@8 b8: - //SEG234 [125] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG233 [124] (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 - //SEG235 [126] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 -- vwuz1=vwuz2 + //SEG234 [125] (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 - //SEG236 [127] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG235 [126] (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 - //SEG237 [128] call mulu16_sel - //SEG238 [153] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG236 [127] call mulu16_sel + //SEG237 [152] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG239 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG238 [152] 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 - //SEG240 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy - //SEG241 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG239 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG240 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG242 [129] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG241 [128] (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 b9 - //SEG243 sin16s::@9 + //SEG242 sin16s::@9 b9: - //SEG244 [130] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 -- vwuz1=vwuz2 + //SEG243 [129] (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 - //SEG245 [131] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG244 [130] (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 - //SEG246 [132] call mulu16_sel - //SEG247 [153] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG245 [131] call mulu16_sel + //SEG246 [152] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG248 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG247 [152] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu16_sel.select - //SEG249 [153] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG248 [152] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG250 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG249 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG251 [133] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG250 [132] (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 b10 - //SEG252 sin16s::@10 + //SEG251 sin16s::@10 b10: - //SEG253 [134] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 -- vwuz1=vwuz2 + //SEG252 [133] (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 - //SEG254 [135] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG253 [134] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -4809,71 +4793,71 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG255 [136] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG254 [135] (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 - //SEG256 [137] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG255 [136] (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 - //SEG257 [138] call mulu16_sel - //SEG258 [153] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG256 [137] call mulu16_sel + //SEG257 [152] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG259 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG258 [152] 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 - //SEG260 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG261 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG259 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG260 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG262 [139] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG261 [138] (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 b11 - //SEG263 sin16s::@11 + //SEG262 sin16s::@11 b11: - //SEG264 [140] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 -- vwuz1=vwuz2 + //SEG263 [139] (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 - //SEG265 [141] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 -- vwuz1=vwuz2 + //SEG264 [140] (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 - //SEG266 [142] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG265 [141] (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 - //SEG267 [143] call mulu16_sel - //SEG268 [153] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG266 [142] call mulu16_sel + //SEG267 [152] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] mulu16_sel_from_b11: - //SEG269 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG268 [152] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG270 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy - //SEG271 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + //SEG269 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG270 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG272 [144] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG271 [143] (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 b12 - //SEG273 sin16s::@12 + //SEG272 sin16s::@12 b12: - //SEG274 [145] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 -- vwuz1=vwuz2 + //SEG273 [144] (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 - //SEG275 [146] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz2_ror_4 + //SEG274 [145] (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 @@ -4884,7 +4868,7 @@ sin16s: { ror x5_128 dey bne !- - //SEG276 [147] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 + //SEG275 [146] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 lda usinx clc adc x5_128 @@ -4892,14 +4876,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx_1+1 - //SEG277 [148] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 + //SEG276 [147] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b15 jmp b6 - //SEG278 sin16s::@6 + //SEG277 sin16s::@6 b6: - //SEG279 [149] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 + //SEG278 [148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 sec lda usinx_1 eor #$ff @@ -4909,60 +4893,60 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG280 [150] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG279 [149] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] b3_from_b15: b3_from_b6: - //SEG281 [150] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG280 [149] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG282 sin16s::@3 + //SEG281 sin16s::@3 b3: jmp breturn - //SEG283 sin16s::@return + //SEG282 sin16s::@return breturn: - //SEG284 [151] return + //SEG283 [150] return rts - //SEG285 sin16s::@15 + //SEG284 sin16s::@15 b15: - //SEG286 [152] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2 + //SEG285 [151] (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_b15 } -//SEG287 mulu16_sel +//SEG286 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($2a) v1, word zeropage($2c) v2, byte zeropage($2e) select) mulu16_sel: { - .label _0 = $a4 - .label _1 = $a8 + .label _0 = $a2 + .label _1 = $a6 .label v1 = $2a .label v2 = $2c - .label return = $86 - .label return_1 = $8a - .label return_2 = $8e - .label return_10 = $94 - .label return_11 = $98 + .label return = $84 + .label return_1 = $88 + .label return_2 = $8c + .label return_10 = $92 + .label return_11 = $96 .label select = $2e - .label return_12 = $ac - //SEG288 [154] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + .label return_12 = $aa + //SEG287 [153] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG289 [155] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 + //SEG288 [154] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 lda v2 sta mul16u.b lda v2+1 sta mul16u.b+1 - //SEG290 [156] call mul16u - //SEG291 [102] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG289 [155] call mul16u + //SEG290 [101] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] mul16u_from_mulu16_sel: - //SEG292 [102] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy - //SEG293 [102] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy + //SEG291 [101] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG292 [101] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - //SEG294 [157] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG293 [156] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return_3 lda mul16u.res+1 @@ -4972,9 +4956,9 @@ mulu16_sel: { lda mul16u.res+3 sta mul16u.return_3+3 jmp b2 - //SEG295 mulu16_sel::@2 + //SEG294 mulu16_sel::@2 b2: - //SEG296 [158] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 -- vduz1=vduz2 + //SEG295 [157] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 -- vduz1=vduz2 lda mul16u.return_3 sta _0 lda mul16u.return_3+1 @@ -4983,7 +4967,7 @@ mulu16_sel: { sta _0+2 lda mul16u.return_3+3 sta _0+3 - //SEG297 [159] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3 + //SEG296 [158] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3 lda _0 sta _1 lda _0+1 @@ -5002,81 +4986,81 @@ mulu16_sel: { dex bne !- !e: - //SEG298 [160] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG297 [159] (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 - //SEG299 mulu16_sel::@return + //SEG298 mulu16_sel::@return breturn: - //SEG300 [161] return + //SEG299 [160] return rts } -//SEG301 div32u16u +//SEG300 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 = $b0 - .label quotient_lo = $b4 - .label return = $b6 + .label quotient_hi = $ae + .label quotient_lo = $b2 + .label return = $b4 .label return_2 = $59 - //SEG302 [163] call divr16u - //SEG303 [172] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG301 [162] call divr16u + //SEG302 [171] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG304 [172] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG303 [171] 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 - //SEG305 [172] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG304 [171] 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 - //SEG306 [164] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG305 [163] (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 b2 - //SEG307 div32u16u::@2 + //SEG306 div32u16u::@2 b2: - //SEG308 [165] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG307 [164] (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 - //SEG309 [166] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG308 [165] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta divr16u.rem lda rem16u+1 sta divr16u.rem+1 - //SEG310 [167] call divr16u - //SEG311 [172] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG309 [166] call divr16u + //SEG310 [171] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] divr16u_from_b2: - //SEG312 [172] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG311 [171] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG313 [172] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG312 [171] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG314 [168] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG313 [167] (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 b3 - //SEG315 div32u16u::@3 + //SEG314 div32u16u::@3 b3: - //SEG316 [169] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 + //SEG315 [168] (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 - //SEG317 [170] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG316 [169] (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 @@ -5086,84 +5070,84 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG318 div32u16u::@return + //SEG317 div32u16u::@return breturn: - //SEG319 [171] return + //SEG318 [170] return rts } -//SEG320 divr16u +//SEG319 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($31) dividend, word zeropage($2f) rem) divr16u: { - .label _1 = $ba - .label _2 = $bb + .label _1 = $b8 + .label _2 = $b9 .label rem = $2f .label dividend = $31 .label quotient = $33 .label i = $35 .label return = $33 - .label return_2 = $ae - .label return_3 = $b2 - //SEG321 [173] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + .label return_2 = $ac + .label return_3 = $b0 + //SEG320 [172] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG322 [173] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG321 [172] 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 - //SEG323 [173] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG322 [172] 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 - //SEG324 [173] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG325 [173] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG323 [172] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG324 [172] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG326 [173] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG325 [172] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG327 [173] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG328 [173] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG329 [173] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG330 [173] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG326 [172] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG327 [172] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG328 [172] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG329 [172] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG331 divr16u::@1 + //SEG330 divr16u::@1 b1: - //SEG332 [174] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG331 [173] (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 - //SEG333 [175] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 + //SEG332 [174] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG334 [176] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG333 [175] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _1 sta _2 - //SEG335 [177] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG334 [176] 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 - //SEG336 divr16u::@4 + //SEG335 divr16u::@4 b4: - //SEG337 [178] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG336 [177] (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 - //SEG338 [179] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG337 [178] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG339 [179] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG338 [178] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG340 divr16u::@2 + //SEG339 divr16u::@2 b2: - //SEG341 [180] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG340 [179] (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 - //SEG342 [181] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG341 [180] (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 - //SEG343 [182] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG342 [181] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>SIN_SIZE bcc b3_from_b2 @@ -5173,14 +5157,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG344 divr16u::@5 + //SEG343 divr16u::@5 b5: - //SEG345 [183] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG344 [182] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG346 [184] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG345 [183] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #SIN_SIZE sta rem+1 - //SEG347 [185] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG346 [184] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG348 [185] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG349 [185] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG347 [184] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG348 [184] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG350 divr16u::@3 + //SEG349 divr16u::@3 b3: - //SEG351 [186] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG350 [185] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG352 [187] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG351 [186] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b3 jmp b6 - //SEG353 divr16u::@6 + //SEG352 divr16u::@6 b6: - //SEG354 [188] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 + //SEG353 [187] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 lda rem sta rem16u lda rem+1 sta rem16u+1 jmp breturn - //SEG355 divr16u::@return + //SEG354 divr16u::@return breturn: - //SEG356 [189] return + //SEG355 [188] return rts } -//SEG357 bitmap_clear +//SEG356 bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = $37 .label x = $39 .label y = $36 - .label _3 = $be - //SEG358 [190] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + .label _3 = $bc + //SEG357 [189] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_ylo sta _3 lda bitmap_plot_yhi sta _3+1 - //SEG359 [191] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 -- pbuz1=pbuz2 + //SEG358 [190] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 -- pbuz1=pbuz2 lda _3 sta bitmap lda _3+1 sta bitmap+1 - //SEG360 [192] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG359 [191] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: - //SEG361 [192] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 + //SEG360 [191] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG362 [192] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG361 [191] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG363 [192] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG362 [191] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] b1_from_b3: - //SEG364 [192] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy - //SEG365 [192] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG363 [191] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG364 [191] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG366 bitmap_clear::@1 + //SEG365 bitmap_clear::@1 b1: - //SEG367 [193] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG366 [192] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] b2_from_b1: - //SEG368 [193] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuz1=vbuc1 + //SEG367 [192] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG369 [193] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG368 [192] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG370 [193] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG369 [192] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] b2_from_b2: - //SEG371 [193] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy - //SEG372 [193] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG370 [192] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG371 [192] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG373 bitmap_clear::@2 + //SEG372 bitmap_clear::@2 b2: - //SEG374 [194] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG373 [193] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (bitmap),y - //SEG375 [195] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG374 [194] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG376 [196] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 + //SEG375 [195] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG377 [197] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG376 [196] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #$c8 bne b2_from_b2 jmp b3 - //SEG378 bitmap_clear::@3 + //SEG377 bitmap_clear::@3 b3: - //SEG379 [198] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG378 [197] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG380 [199] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG379 [198] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$28 bne b1_from_b3 jmp breturn - //SEG381 bitmap_clear::@return + //SEG380 bitmap_clear::@return breturn: - //SEG382 [200] return + //SEG381 [199] return rts } -//SEG383 bitmap_init +//SEG382 bitmap_init // Initialize bitmap plotting tables bitmap_init: { - .label _3 = $c0 - .label _4 = $c1 - .label _5 = $c2 - .label _6 = $c3 - .label _7 = $c4 + .label _3 = $be + .label _4 = $bf + .label _5 = $c0 + .label _6 = $c1 + .label _7 = $c2 .label bits = $3a .label x = $3b .label y = $3c .label yoffs = $3d - //SEG384 [202] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG383 [201] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - //SEG385 [202] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 + //SEG384 [201] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG386 [202] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1 + //SEG385 [201] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1 lda #$80 sta bits jmp b1 - //SEG387 [202] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG386 [201] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - //SEG388 [202] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG389 [202] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG387 [201] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG388 [201] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 - //SEG390 bitmap_init::@1 + //SEG389 bitmap_init::@1 b1: - //SEG391 [203] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG390 [202] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 lda bits ldy x sta bitmap_plot_bit,y - //SEG392 [204] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG391 [203] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 lsr bits - //SEG393 [205] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuz1_neq_0_then_la1 + //SEG392 [204] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuz1_neq_0_then_la1 lda bits cmp #0 bne b10_from_b1 - //SEG394 [206] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG393 [205] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - //SEG395 [206] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1 + //SEG394 [205] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1 lda #$80 sta bits jmp b2 - //SEG396 bitmap_init::@2 + //SEG395 bitmap_init::@2 b2: - //SEG397 [207] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 + //SEG396 [206] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG398 [208] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuz1_neq_0_then_la1 + //SEG397 [207] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuz1_neq_0_then_la1 lda x cmp #0 bne b1_from_b2 - //SEG399 [209] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG398 [208] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - //SEG400 [209] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + //SEG399 [208] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #BITMAP sta yoffs+1 - //SEG401 [209] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1 + //SEG400 [208] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1 lda #0 sta y jmp b3 - //SEG402 [209] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG401 [208] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - //SEG403 [209] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG404 [209] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG402 [208] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG403 [208] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 - //SEG405 bitmap_init::@3 + //SEG404 bitmap_init::@3 b3: - //SEG406 [210] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG405 [209] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and y sta _3 - //SEG407 [211] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 + //SEG406 [210] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 lda yoffs sta _4 - //SEG408 [212] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3 + //SEG407 [211] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3 lda _3 ora _4 sta _5 - //SEG409 [213] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG408 [212] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuz1=vbuz2 lda _5 ldy y sta bitmap_plot_ylo,y - //SEG410 [214] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 + //SEG409 [213] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 lda yoffs+1 sta _6 - //SEG411 [215] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG410 [214] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuz1=vbuz2 lda _6 ldy y sta bitmap_plot_yhi,y - //SEG412 [216] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG411 [215] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and y sta _7 - //SEG413 [217] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG412 [216] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 lda _7 cmp #7 bne b4_from_b3 jmp b7 - //SEG414 bitmap_init::@7 + //SEG413 bitmap_init::@7 b7: - //SEG415 [218] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG414 [217] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -5402,64 +5386,64 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG416 [219] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + //SEG415 [218] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] b4_from_b3: b4_from_b7: - //SEG417 [219] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy + //SEG416 [218] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy jmp b4 - //SEG418 bitmap_init::@4 + //SEG417 bitmap_init::@4 b4: - //SEG419 [220] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 + //SEG418 [219] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG420 [221] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuz1_neq_0_then_la1 + //SEG419 [220] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuz1_neq_0_then_la1 lda y cmp #0 bne b3_from_b4 jmp breturn - //SEG421 bitmap_init::@return + //SEG420 bitmap_init::@return breturn: - //SEG422 [222] return + //SEG421 [221] return rts - //SEG423 [223] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG422 [222] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] b10_from_b1: jmp b10 - //SEG424 bitmap_init::@10 + //SEG423 bitmap_init::@10 b10: - //SEG425 [206] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG424 [205] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] b2_from_b10: - //SEG426 [206] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG425 [205] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy jmp b2 } -//SEG427 fill +//SEG426 fill // Fill some memory with a value fill: { .const size = $3e8 .label end = SCREEN+size .label addr = $3f - //SEG428 [225] phi from fill to fill::@1 [phi:fill->fill::@1] + //SEG427 [224] phi from fill to fill::@1 [phi:fill->fill::@1] b1_from_fill: - //SEG429 [225] phi (byte*) fill::addr#2 = (const byte*) SCREEN#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 + //SEG428 [224] phi (byte*) fill::addr#2 = (const byte*) SCREEN#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta addr+1 jmp b1 - //SEG430 [225] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] + //SEG429 [224] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] b1_from_b1: - //SEG431 [225] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy + //SEG430 [224] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG432 fill::@1 + //SEG431 fill::@1 b1: - //SEG433 [226] *((byte*) fill::addr#2) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 + //SEG432 [225] *((byte*) fill::addr#2) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 lda #WHITE ldy #0 sta (addr),y - //SEG434 [227] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG433 [226] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG435 [228] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG434 [227] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 lda addr+1 cmp #>end bne b1_from_b1 @@ -5467,9 +5451,9 @@ fill: { cmp #=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:79 [ 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 [95] (word~) mul16s::$5 ← > (dword) mul16s::m#0 [ mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:79 [ 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 [96] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$6 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a -Statement [97] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:79 [ 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 [98] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:79 [ 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 [100] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:79 [ 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 [103] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ 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:76::mulu16_sel:123::mul16u:156 [ 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:76::mulu16_sel:128::mul16u:156 [ 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:76::mulu16_sel:132::mul16u:156 [ 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:76::mulu16_sel:138::mul16u:156 [ 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:76::mulu16_sel:143::mul16u:156 [ 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 [95] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$6 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a +Statement [96] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:79 [ 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 [97] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:79 [ 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 [99] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:79 [ 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 [102] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ 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:76::mulu16_sel:122::mul16u:155 [ 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:76::mulu16_sel:127::mul16u:155 [ 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:76::mulu16_sel:131::mul16u:155 [ 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:76::mulu16_sel:137::mul16u:155 [ 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:76::mulu16_sel:142::mul16u:155 [ 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:35 [ sin16s::isUpper#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ mulu16_sel::select#5 ] -Statement [105] 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:79::mul16u:91 [ 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:76::mulu16_sel:123::mul16u:156 [ 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:76::mulu16_sel:128::mul16u:156 [ 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:76::mulu16_sel:132::mul16u:156 [ 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:76::mulu16_sel:138::mul16u:156 [ 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:76::mulu16_sel:143::mul16u:156 [ 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 [107] (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:79::mul16u:91 [ 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:76::mulu16_sel:123::mul16u:156 [ 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:76::mulu16_sel:128::mul16u:156 [ 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:76::mulu16_sel:132::mul16u:156 [ 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:76::mulu16_sel:138::mul16u:156 [ 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:76::mulu16_sel:143::mul16u:156 [ 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 [109] (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:79::mul16u:91 [ 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:76::mulu16_sel:123::mul16u:156 [ 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:76::mulu16_sel:128::mul16u:156 [ 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:76::mulu16_sel:132::mul16u:156 [ 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:76::mulu16_sel:138::mul16u:156 [ 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:76::mulu16_sel:143::mul16u:156 [ 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 [113] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [114] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [116] 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:76 [ 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 [117] (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:76 [ 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 [119] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$6 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$6 ] ) always clobbers reg byte a reg byte y +Statement [104] 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:79::mul16u:91 [ 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:76::mulu16_sel:122::mul16u:155 [ 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:76::mulu16_sel:127::mul16u:155 [ 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:76::mulu16_sel:131::mul16u:155 [ 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:76::mulu16_sel:137::mul16u:155 [ 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:76::mulu16_sel:142::mul16u:155 [ 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 [106] (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:79::mul16u:91 [ 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:76::mulu16_sel:122::mul16u:155 [ 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:76::mulu16_sel:127::mul16u:155 [ 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:76::mulu16_sel:131::mul16u:155 [ 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:76::mulu16_sel:137::mul16u:155 [ 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:76::mulu16_sel:142::mul16u:155 [ 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 [108] (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:79::mul16u:91 [ 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:76::mulu16_sel:122::mul16u:155 [ 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:76::mulu16_sel:127::mul16u:155 [ 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:76::mulu16_sel:131::mul16u:155 [ 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:76::mulu16_sel:137::mul16u:155 [ 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:76::mulu16_sel:142::mul16u:155 [ 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 [112] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [113] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [115] 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:76 [ 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 [116] (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:76 [ 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 [118] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$6 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$6 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:35 [ sin16s::isUpper#2 ] -Statement [120] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [121] (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:76 [ 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 [122] (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:76 [ 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 [124] (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:76 [ 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 [125] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [126] (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:76 [ 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 [127] (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:76 [ 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 [129] (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:76 [ 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 [130] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [131] (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:76 [ 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 [133] (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:76 [ 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 [134] (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:76 [ 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 [135] (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:76 [ 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 [136] (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:76 [ 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 [137] (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:76 [ 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 [139] (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:76 [ 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 [140] (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:76 [ 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 [141] (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:76 [ 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 [142] (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:76 [ 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 [144] (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:76 [ 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 [145] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [146] (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:76 [ 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 [147] (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:76 [ 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 [149] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [152] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [154] (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:76::mulu16_sel:123 [ 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:76::mulu16_sel:128 [ 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:76::mulu16_sel:132 [ 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:76::mulu16_sel:138 [ 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:76::mulu16_sel:143 [ 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 [155] (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:76::mulu16_sel:123 [ 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:76::mulu16_sel:128 [ 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:76::mulu16_sel:132 [ 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:76::mulu16_sel:138 [ 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:76::mulu16_sel:143 [ 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 [157] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123 [ 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:76::mulu16_sel:128 [ 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:76::mulu16_sel:132 [ 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:76::mulu16_sel:138 [ 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:76::mulu16_sel:143 [ 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 [158] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123 [ 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:76::mulu16_sel:128 [ 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:76::mulu16_sel:132 [ 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:76::mulu16_sel:138 [ 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:76::mulu16_sel:143 [ 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 [159] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123 [ 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:76::mulu16_sel:128 [ 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:76::mulu16_sel:132 [ 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:76::mulu16_sel:138 [ 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:76::mulu16_sel:143 [ 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 [160] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123 [ 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:76::mulu16_sel:128 [ 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:76::mulu16_sel:132 [ 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:76::mulu16_sel:138 [ 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:76::mulu16_sel:143 [ 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 [164] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [165] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [166] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [168] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [169] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [170] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [175] (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:71::divr16u:163 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [119] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [120] (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:76 [ 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 [121] (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:76 [ 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 [123] (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:76 [ 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 [124] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [125] (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:76 [ 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 [126] (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:76 [ 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 [128] (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:76 [ 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 [129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [130] (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:76 [ 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 [132] (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:76 [ 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 [133] (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:76 [ 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 [134] (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:76 [ 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 [135] (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:76 [ 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 [136] (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:76 [ 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 [138] (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:76 [ 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 [139] (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:76 [ 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 [140] (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:76 [ 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 [141] (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:76 [ 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 [143] (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:76 [ 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 [144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [145] (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:76 [ 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 [146] (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:76 [ 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 [148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [151] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [153] (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:76::mulu16_sel:122 [ 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:76::mulu16_sel:127 [ 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:76::mulu16_sel:131 [ 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:76::mulu16_sel:137 [ 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:76::mulu16_sel:142 [ 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 [154] (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:76::mulu16_sel:122 [ 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:76::mulu16_sel:127 [ 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:76::mulu16_sel:131 [ 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:76::mulu16_sel:137 [ 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:76::mulu16_sel:142 [ 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 [156] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ 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:76::mulu16_sel:127 [ 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:76::mulu16_sel:131 [ 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:76::mulu16_sel:137 [ 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:76::mulu16_sel:142 [ 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 [157] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ 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:76::mulu16_sel:127 [ 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:76::mulu16_sel:131 [ 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:76::mulu16_sel:137 [ 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:76::mulu16_sel:142 [ 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 [158] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ 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:76::mulu16_sel:127 [ 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:76::mulu16_sel:131 [ 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:76::mulu16_sel:137 [ 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:76::mulu16_sel:142 [ 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 [159] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ 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:76::mulu16_sel:127 [ 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:76::mulu16_sel:131 [ 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:76::mulu16_sel:137 [ 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:76::mulu16_sel:142 [ 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 [163] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a +Statement [164] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a +Statement [165] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a +Statement [167] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a +Statement [168] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a +Statement [169] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::return#0 ] ) always clobbers reg byte a +Statement [174] (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:71::divr16u:162 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ 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:53 [ divr16u::i#2 divr16u::i#1 ] -Statement [176] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:163 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a -Statement [178] (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:71::divr16u:163 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [182] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:163 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [184] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:163 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [188] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:163 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [190] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) [ bitmap_clear::$3 ] ( main:3::bitmap_clear:19 [ bitmap_clear::$3 ] ) always clobbers reg byte a -Statement [191] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:3::bitmap_clear:19 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a -Statement [194] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:3::bitmap_clear:19 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y +Statement [175] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a +Statement [177] (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:71::divr16u:162 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [181] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [183] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [187] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [189] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) [ bitmap_clear::$3 ] ( main:3::bitmap_clear:19 [ bitmap_clear::$3 ] ) always clobbers reg byte a +Statement [190] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:3::bitmap_clear:19 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a +Statement [193] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:3::bitmap_clear:19 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:57 [ bitmap_clear::x#2 bitmap_clear::x#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:57 [ bitmap_clear::x#2 bitmap_clear::x#1 ] -Statement [210] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) always clobbers reg byte a +Statement [209] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:60 [ bitmap_init::y#2 bitmap_init::y#1 ] -Statement [216] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a -Statement [218] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a -Statement [226] *((byte*) fill::addr#2) ← (const byte) WHITE#0 [ fill::addr#2 ] ( main:3::fill:15 [ fill::addr#2 ] ) always clobbers reg byte a reg byte y -Statement [228] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 [ fill::addr#1 ] ( main:3::fill:15 [ fill::addr#1 ] ) always clobbers reg byte a +Statement [215] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a +Statement [217] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [225] *((byte*) fill::addr#2) ← (const byte) WHITE#0 [ fill::addr#2 ] ( main:3::fill:15 [ fill::addr#2 ] ) always clobbers reg byte a reg byte y +Statement [227] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 [ fill::addr#1 ] ( main:3::fill:15 [ fill::addr#1 ] ) always clobbers reg byte a Statement [6] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:3 [ ] ) always clobbers reg byte a Statement [7] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:3 [ ] ) always clobbers reg byte a Statement [8] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:3 [ ] ) always clobbers reg byte a @@ -5654,71 +5637,70 @@ Statement [90] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 [ mul16s: Statement [92] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:3::sin16s_gen2:21::mul16s:79 [ 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 [93] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:79 [ 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 [94] 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:79 [ 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 [95] (word~) mul16s::$5 ← > (dword) mul16s::m#0 [ mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:79 [ 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 [96] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$6 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a -Statement [97] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:79 [ 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 [98] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:79 [ 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 [100] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:79 [ 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 [103] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ 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:76::mulu16_sel:123::mul16u:156 [ 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:76::mulu16_sel:128::mul16u:156 [ 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:76::mulu16_sel:132::mul16u:156 [ 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:76::mulu16_sel:138::mul16u:156 [ 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:76::mulu16_sel:143::mul16u:156 [ 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 [105] 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:79::mul16u:91 [ 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:76::mulu16_sel:123::mul16u:156 [ 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:76::mulu16_sel:128::mul16u:156 [ 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:76::mulu16_sel:132::mul16u:156 [ 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:76::mulu16_sel:138::mul16u:156 [ 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:76::mulu16_sel:143::mul16u:156 [ 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 [107] (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:79::mul16u:91 [ 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:76::mulu16_sel:123::mul16u:156 [ 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:76::mulu16_sel:128::mul16u:156 [ 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:76::mulu16_sel:132::mul16u:156 [ 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:76::mulu16_sel:138::mul16u:156 [ 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:76::mulu16_sel:143::mul16u:156 [ 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 [109] (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:79::mul16u:91 [ 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:76::mulu16_sel:123::mul16u:156 [ 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:76::mulu16_sel:128::mul16u:156 [ 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:76::mulu16_sel:132::mul16u:156 [ 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:76::mulu16_sel:138::mul16u:156 [ 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:76::mulu16_sel:143::mul16u:156 [ 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 [113] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [114] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [116] 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:76 [ 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 [117] (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:76 [ 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 [119] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$6 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$6 ] ) always clobbers reg byte a reg byte y -Statement [120] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [121] (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:76 [ 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 [122] (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:76 [ 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 [124] (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:76 [ 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 [125] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [126] (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:76 [ 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 [127] (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:76 [ 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 [129] (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:76 [ 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 [130] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [131] (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:76 [ 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 [133] (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:76 [ 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 [134] (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:76 [ 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 [135] (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:76 [ 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 [136] (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:76 [ 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 [137] (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:76 [ 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 [139] (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:76 [ 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 [140] (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:76 [ 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 [141] (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:76 [ 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 [142] (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:76 [ 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 [144] (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:76 [ 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 [145] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [146] (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:76 [ 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 [147] (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:76 [ 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 [149] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [152] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [154] (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:76::mulu16_sel:123 [ 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:76::mulu16_sel:128 [ 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:76::mulu16_sel:132 [ 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:76::mulu16_sel:138 [ 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:76::mulu16_sel:143 [ 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 [155] (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:76::mulu16_sel:123 [ 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:76::mulu16_sel:128 [ 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:76::mulu16_sel:132 [ 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:76::mulu16_sel:138 [ 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:76::mulu16_sel:143 [ 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 [157] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123 [ 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:76::mulu16_sel:128 [ 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:76::mulu16_sel:132 [ 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:76::mulu16_sel:138 [ 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:76::mulu16_sel:143 [ 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 [158] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123 [ 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:76::mulu16_sel:128 [ 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:76::mulu16_sel:132 [ 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:76::mulu16_sel:138 [ 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:76::mulu16_sel:143 [ 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 [159] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123 [ 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:76::mulu16_sel:128 [ 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:76::mulu16_sel:132 [ 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:76::mulu16_sel:138 [ 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:76::mulu16_sel:143 [ 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 [160] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123 [ 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:76::mulu16_sel:128 [ 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:76::mulu16_sel:132 [ 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:76::mulu16_sel:138 [ 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:76::mulu16_sel:143 [ 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 [164] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [165] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [166] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [168] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [169] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [170] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [175] (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:71::divr16u:163 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [176] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:163 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a -Statement [178] (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:71::divr16u:163 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [182] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:163 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [184] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:163 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [188] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:163 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [190] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) [ bitmap_clear::$3 ] ( main:3::bitmap_clear:19 [ bitmap_clear::$3 ] ) always clobbers reg byte a -Statement [191] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:3::bitmap_clear:19 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a -Statement [194] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:3::bitmap_clear:19 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y -Statement [210] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) always clobbers reg byte a -Statement [216] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a -Statement [218] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a -Statement [226] *((byte*) fill::addr#2) ← (const byte) WHITE#0 [ fill::addr#2 ] ( main:3::fill:15 [ fill::addr#2 ] ) always clobbers reg byte a reg byte y -Statement [228] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 [ fill::addr#1 ] ( main:3::fill:15 [ fill::addr#1 ] ) always clobbers reg byte a +Statement [95] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$6 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a +Statement [96] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:79 [ 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 [97] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:79 [ 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 [99] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:79 [ 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 [102] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ 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:76::mulu16_sel:122::mul16u:155 [ 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:76::mulu16_sel:127::mul16u:155 [ 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:76::mulu16_sel:131::mul16u:155 [ 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:76::mulu16_sel:137::mul16u:155 [ 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:76::mulu16_sel:142::mul16u:155 [ 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 [104] 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:79::mul16u:91 [ 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:76::mulu16_sel:122::mul16u:155 [ 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:76::mulu16_sel:127::mul16u:155 [ 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:76::mulu16_sel:131::mul16u:155 [ 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:76::mulu16_sel:137::mul16u:155 [ 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:76::mulu16_sel:142::mul16u:155 [ 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 [106] (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:79::mul16u:91 [ 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:76::mulu16_sel:122::mul16u:155 [ 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:76::mulu16_sel:127::mul16u:155 [ 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:76::mulu16_sel:131::mul16u:155 [ 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:76::mulu16_sel:137::mul16u:155 [ 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:76::mulu16_sel:142::mul16u:155 [ 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 [108] (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:79::mul16u:91 [ 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:76::mulu16_sel:122::mul16u:155 [ 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:76::mulu16_sel:127::mul16u:155 [ 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:76::mulu16_sel:131::mul16u:155 [ 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:76::mulu16_sel:137::mul16u:155 [ 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:76::mulu16_sel:142::mul16u:155 [ 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 [112] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [113] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [115] 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:76 [ 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 [116] (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:76 [ 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 [118] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$6 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$6 ] ) always clobbers reg byte a reg byte y +Statement [119] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [120] (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:76 [ 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 [121] (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:76 [ 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 [123] (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:76 [ 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 [124] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [125] (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:76 [ 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 [126] (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:76 [ 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 [128] (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:76 [ 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 [129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [130] (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:76 [ 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 [132] (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:76 [ 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 [133] (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:76 [ 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 [134] (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:76 [ 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 [135] (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:76 [ 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 [136] (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:76 [ 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 [138] (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:76 [ 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 [139] (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:76 [ 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 [140] (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:76 [ 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 [141] (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:76 [ 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 [143] (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:76 [ 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 [144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [145] (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:76 [ 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 [146] (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:76 [ 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 [148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [151] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:76 [ 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 [153] (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:76::mulu16_sel:122 [ 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:76::mulu16_sel:127 [ 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:76::mulu16_sel:131 [ 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:76::mulu16_sel:137 [ 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:76::mulu16_sel:142 [ 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 [154] (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:76::mulu16_sel:122 [ 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:76::mulu16_sel:127 [ 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:76::mulu16_sel:131 [ 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:76::mulu16_sel:137 [ 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:76::mulu16_sel:142 [ 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 [156] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ 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:76::mulu16_sel:127 [ 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:76::mulu16_sel:131 [ 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:76::mulu16_sel:137 [ 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:76::mulu16_sel:142 [ 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 [157] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ 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:76::mulu16_sel:127 [ 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:76::mulu16_sel:131 [ 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:76::mulu16_sel:137 [ 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:76::mulu16_sel:142 [ 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 [158] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ 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:76::mulu16_sel:127 [ 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:76::mulu16_sel:131 [ 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:76::mulu16_sel:137 [ 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:76::mulu16_sel:142 [ 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 [159] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ 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:76::mulu16_sel:127 [ 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:76::mulu16_sel:131 [ 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:76::mulu16_sel:137 [ 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:76::mulu16_sel:142 [ 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 [163] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a +Statement [164] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a +Statement [165] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a +Statement [167] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a +Statement [168] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a +Statement [169] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::return#0 ] ) always clobbers reg byte a +Statement [174] (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:71::divr16u:162 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [175] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a +Statement [177] (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:71::divr16u:162 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [181] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [183] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [187] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [189] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) [ bitmap_clear::$3 ] ( main:3::bitmap_clear:19 [ bitmap_clear::$3 ] ) always clobbers reg byte a +Statement [190] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:3::bitmap_clear:19 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a +Statement [193] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:3::bitmap_clear:19 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y +Statement [209] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) always clobbers reg byte a +Statement [215] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a +Statement [217] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [225] *((byte*) fill::addr#2) ← (const byte) WHITE#0 [ fill::addr#2 ] ( main:3::fill:15 [ fill::addr#2 ] ) always clobbers reg byte a reg byte y +Statement [227] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 [ fill::addr#1 ] ( main:3::fill:15 [ fill::addr#1 ] ) always clobbers reg byte a Potential registers zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] : zp ZP_WORD:2 , Potential registers zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] : zp ZP_WORD:4 , Potential registers zp ZP_BYTE:6 [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y , @@ -5774,151 +5756,149 @@ Potential registers zp ZP_DWORD:105 [ sin16s_gen2::$5 ] : zp ZP_DWORD:105 , Potential registers zp ZP_WORD:109 [ sin16s_gen2::$6 ] : zp ZP_WORD:109 , Potential registers zp ZP_WORD:111 [ sin16s_gen2::$8 ] : zp ZP_WORD:111 , Potential registers zp ZP_DWORD:113 [ mul16u::return#2 ] : zp ZP_DWORD:113 , -Potential registers zp ZP_WORD:117 [ mul16s::$5 ] : zp ZP_WORD:117 , -Potential registers zp ZP_WORD:119 [ mul16s::$6 ] : zp ZP_WORD:119 , -Potential registers zp ZP_WORD:121 [ mul16s::$16 ] : zp ZP_WORD:121 , -Potential registers zp ZP_DWORD:123 [ mul16s::return#0 ] : zp ZP_DWORD:123 , -Potential registers zp ZP_BYTE:127 [ mul16u::$1 ] : zp ZP_BYTE:127 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_DWORD:128 [ sin16s::$6 ] : zp ZP_DWORD:128 , -Potential registers zp ZP_WORD:132 [ sin16s::x1#0 ] : zp ZP_WORD:132 , -Potential registers zp ZP_WORD:134 [ mulu16_sel::return#0 ] : zp ZP_WORD:134 , -Potential registers zp ZP_WORD:136 [ sin16s::x2#0 ] : zp ZP_WORD:136 , -Potential registers zp ZP_WORD:138 [ mulu16_sel::return#1 ] : zp ZP_WORD:138 , -Potential registers zp ZP_WORD:140 [ sin16s::x3#0 ] : zp ZP_WORD:140 , -Potential registers zp ZP_WORD:142 [ mulu16_sel::return#2 ] : zp ZP_WORD:142 , -Potential registers zp ZP_WORD:144 [ sin16s::x3_6#0 ] : zp ZP_WORD:144 , -Potential registers zp ZP_WORD:146 [ sin16s::usinx#0 ] : zp ZP_WORD:146 , -Potential registers zp ZP_WORD:148 [ mulu16_sel::return#10 ] : zp ZP_WORD:148 , -Potential registers zp ZP_WORD:150 [ sin16s::x4#0 ] : zp ZP_WORD:150 , -Potential registers zp ZP_WORD:152 [ mulu16_sel::return#11 ] : zp ZP_WORD:152 , -Potential registers zp ZP_WORD:154 [ sin16s::x5#0 ] : zp ZP_WORD:154 , -Potential registers zp ZP_WORD:156 [ sin16s::x5_128#0 ] : zp ZP_WORD:156 , -Potential registers zp ZP_WORD:158 [ sin16s::usinx#1 ] : zp ZP_WORD:158 , -Potential registers zp ZP_DWORD:160 [ mul16u::return#3 ] : zp ZP_DWORD:160 , -Potential registers zp ZP_DWORD:164 [ mulu16_sel::$0 ] : zp ZP_DWORD:164 , -Potential registers zp ZP_DWORD:168 [ mulu16_sel::$1 ] : zp ZP_DWORD:168 , -Potential registers zp ZP_WORD:172 [ mulu16_sel::return#12 ] : zp ZP_WORD:172 , -Potential registers zp ZP_WORD:174 [ divr16u::return#2 ] : zp ZP_WORD:174 , -Potential registers zp ZP_WORD:176 [ div32u16u::quotient_hi#0 ] : zp ZP_WORD:176 , -Potential registers zp ZP_WORD:178 [ divr16u::return#3 ] : zp ZP_WORD:178 , -Potential registers zp ZP_WORD:180 [ div32u16u::quotient_lo#0 ] : zp ZP_WORD:180 , -Potential registers zp ZP_DWORD:182 [ div32u16u::return#0 ] : zp ZP_DWORD:182 , -Potential registers zp ZP_BYTE:186 [ divr16u::$1 ] : zp ZP_BYTE:186 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:187 [ divr16u::$2 ] : zp ZP_BYTE:187 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:188 [ rem16u#1 ] : zp ZP_WORD:188 , -Potential registers zp ZP_WORD:190 [ bitmap_clear::$3 ] : zp ZP_WORD:190 , -Potential registers zp ZP_BYTE:192 [ bitmap_init::$3 ] : zp ZP_BYTE:192 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:193 [ bitmap_init::$4 ] : zp ZP_BYTE:193 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_BYTE:194 [ bitmap_init::$5 ] : zp ZP_BYTE:194 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:195 [ bitmap_init::$6 ] : zp ZP_BYTE:195 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:196 [ bitmap_init::$7 ] : zp ZP_BYTE:196 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:117 [ mul16s::$6 ] : zp ZP_WORD:117 , +Potential registers zp ZP_WORD:119 [ mul16s::$16 ] : zp ZP_WORD:119 , +Potential registers zp ZP_DWORD:121 [ mul16s::return#0 ] : zp ZP_DWORD:121 , +Potential registers zp ZP_BYTE:125 [ mul16u::$1 ] : zp ZP_BYTE:125 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_DWORD:126 [ sin16s::$6 ] : zp ZP_DWORD:126 , +Potential registers zp ZP_WORD:130 [ sin16s::x1#0 ] : zp ZP_WORD:130 , +Potential registers zp ZP_WORD:132 [ mulu16_sel::return#0 ] : zp ZP_WORD:132 , +Potential registers zp ZP_WORD:134 [ sin16s::x2#0 ] : zp ZP_WORD:134 , +Potential registers zp ZP_WORD:136 [ mulu16_sel::return#1 ] : zp ZP_WORD:136 , +Potential registers zp ZP_WORD:138 [ sin16s::x3#0 ] : zp ZP_WORD:138 , +Potential registers zp ZP_WORD:140 [ mulu16_sel::return#2 ] : zp ZP_WORD:140 , +Potential registers zp ZP_WORD:142 [ sin16s::x3_6#0 ] : zp ZP_WORD:142 , +Potential registers zp ZP_WORD:144 [ sin16s::usinx#0 ] : zp ZP_WORD:144 , +Potential registers zp ZP_WORD:146 [ mulu16_sel::return#10 ] : zp ZP_WORD:146 , +Potential registers zp ZP_WORD:148 [ sin16s::x4#0 ] : zp ZP_WORD:148 , +Potential registers zp ZP_WORD:150 [ mulu16_sel::return#11 ] : zp ZP_WORD:150 , +Potential registers zp ZP_WORD:152 [ sin16s::x5#0 ] : zp ZP_WORD:152 , +Potential registers zp ZP_WORD:154 [ sin16s::x5_128#0 ] : zp ZP_WORD:154 , +Potential registers zp ZP_WORD:156 [ sin16s::usinx#1 ] : zp ZP_WORD:156 , +Potential registers zp ZP_DWORD:158 [ mul16u::return#3 ] : zp ZP_DWORD:158 , +Potential registers zp ZP_DWORD:162 [ mulu16_sel::$0 ] : zp ZP_DWORD:162 , +Potential registers zp ZP_DWORD:166 [ mulu16_sel::$1 ] : zp ZP_DWORD:166 , +Potential registers zp ZP_WORD:170 [ mulu16_sel::return#12 ] : zp ZP_WORD:170 , +Potential registers zp ZP_WORD:172 [ divr16u::return#2 ] : zp ZP_WORD:172 , +Potential registers zp ZP_WORD:174 [ div32u16u::quotient_hi#0 ] : zp ZP_WORD:174 , +Potential registers zp ZP_WORD:176 [ divr16u::return#3 ] : zp ZP_WORD:176 , +Potential registers zp ZP_WORD:178 [ div32u16u::quotient_lo#0 ] : zp ZP_WORD:178 , +Potential registers zp ZP_DWORD:180 [ div32u16u::return#0 ] : zp ZP_DWORD:180 , +Potential registers zp ZP_BYTE:184 [ divr16u::$1 ] : zp ZP_BYTE:184 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:185 [ divr16u::$2 ] : zp ZP_BYTE:185 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:186 [ rem16u#1 ] : zp ZP_WORD:186 , +Potential registers zp ZP_WORD:188 [ bitmap_clear::$3 ] : zp ZP_WORD:188 , +Potential registers zp ZP_BYTE:190 [ bitmap_init::$3 ] : zp ZP_BYTE:190 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:191 [ bitmap_init::$4 ] : zp ZP_BYTE:191 , reg byte a , reg byte x , reg byte y , reg byte alu , +Potential registers zp ZP_BYTE:192 [ bitmap_init::$5 ] : zp ZP_BYTE:192 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:193 [ bitmap_init::$6 ] : zp ZP_BYTE:193 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:194 [ bitmap_init::$7 ] : zp ZP_BYTE:194 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [mul16u] 346.86: zp ZP_DWORD:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 249.57: zp ZP_DWORD:31 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 202: zp ZP_BYTE:127 [ mul16u::$1 ] 177.67: zp ZP_WORD:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] 8: zp ZP_WORD:23 [ mul16u::b#2 mul16u::b#1 ] 4: zp ZP_DWORD:113 [ mul16u::return#2 ] 4: zp ZP_DWORD:160 [ mul16u::return#3 ] +Uplift Scope [mul16u] 346.86: zp ZP_DWORD:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 249.57: zp ZP_DWORD:31 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 202: zp ZP_BYTE:125 [ mul16u::$1 ] 177.67: zp ZP_WORD:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] 8: zp ZP_WORD:23 [ mul16u::b#2 mul16u::b#1 ] 4: zp ZP_DWORD:113 [ mul16u::return#2 ] 4: zp ZP_DWORD:158 [ mul16u::return#3 ] Uplift Scope [wrap_y] 878: zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] 22: zp ZP_BYTE:71 [ wrap_y::return#0 ] 22: zp ZP_BYTE:79 [ wrap_y::return#1 ] 6: zp ZP_BYTE:88 [ wrap_y::return#2 ] -Uplift Scope [bitmap_clear] 227.6: zp ZP_WORD:55 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 218.83: zp ZP_BYTE:57 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 20.17: zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 2: zp ZP_WORD:190 [ bitmap_clear::$3 ] -Uplift Scope [divr16u] 106.92: zp ZP_WORD:47 [ 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:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp ZP_BYTE:186 [ divr16u::$1 ] 22: zp ZP_BYTE:187 [ divr16u::$2 ] 18.19: zp ZP_BYTE:53 [ divr16u::i#2 divr16u::i#1 ] 9.75: zp ZP_WORD:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 4: zp ZP_WORD:174 [ divr16u::return#2 ] 4: zp ZP_WORD:178 [ divr16u::return#3 ] -Uplift Scope [bitmap_init] 39.11: zp ZP_WORD:61 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp ZP_BYTE:58 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22.5: zp ZP_BYTE:60 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp ZP_BYTE:59 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp ZP_BYTE:193 [ bitmap_init::$4 ] 22: zp ZP_BYTE:194 [ bitmap_init::$5 ] 22: zp ZP_BYTE:195 [ bitmap_init::$6 ] 22: zp ZP_BYTE:196 [ bitmap_init::$7 ] 11: zp ZP_BYTE:192 [ bitmap_init::$3 ] +Uplift Scope [bitmap_clear] 227.6: zp ZP_WORD:55 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 218.83: zp ZP_BYTE:57 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 20.17: zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 2: zp ZP_WORD:188 [ bitmap_clear::$3 ] +Uplift Scope [divr16u] 106.92: zp ZP_WORD:47 [ 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:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp ZP_BYTE:184 [ divr16u::$1 ] 22: zp ZP_BYTE:185 [ divr16u::$2 ] 18.19: zp ZP_BYTE:53 [ divr16u::i#2 divr16u::i#1 ] 9.75: zp ZP_WORD:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 4: zp ZP_WORD:172 [ divr16u::return#2 ] 4: zp ZP_WORD:176 [ divr16u::return#3 ] +Uplift Scope [bitmap_init] 39.11: zp ZP_WORD:61 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp ZP_BYTE:58 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22.5: zp ZP_BYTE:60 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp ZP_BYTE:59 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp ZP_BYTE:191 [ bitmap_init::$4 ] 22: zp ZP_BYTE:192 [ bitmap_init::$5 ] 22: zp ZP_BYTE:193 [ bitmap_init::$6 ] 22: zp ZP_BYTE:194 [ bitmap_init::$7 ] 11: zp ZP_BYTE:190 [ bitmap_init::$3 ] Uplift Scope [render_sine] 22: zp ZP_WORD:65 [ render_sine::$0 ] 22: zp ZP_WORD:67 [ render_sine::$1 ] 22: zp ZP_WORD:69 [ render_sine::sin_val#0 ] 22: zp ZP_WORD:73 [ render_sine::$4 ] 22: zp ZP_WORD:75 [ render_sine::$5 ] 22: zp ZP_WORD:77 [ render_sine::sin2_val#0 ] 20.43: zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] 18.26: zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] 11: zp ZP_BYTE:72 [ render_sine::ypos#0 ] 11: zp ZP_BYTE:80 [ render_sine::ypos2#0 ] Uplift Scope [bitmap_plot] 70: zp ZP_BYTE:6 [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] 28.5: zp ZP_WORD:7 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] 4: zp ZP_WORD:83 [ bitmap_plot::$1 ] 4: zp ZP_BYTE:87 [ bitmap_plot::$2 ] 3: zp ZP_WORD:85 [ bitmap_plot::plotter#1 ] 1: zp ZP_WORD:81 [ bitmap_plot::$3 ] Uplift Scope [sin16s_gen2] 22: zp ZP_DWORD:105 [ sin16s_gen2::$5 ] 22: zp ZP_WORD:111 [ sin16s_gen2::$8 ] 18.19: zp ZP_WORD:17 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] 11: zp ZP_WORD:109 [ sin16s_gen2::$6 ] 10.08: zp ZP_DWORD:11 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] 8.5: zp ZP_WORD:15 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] 0.81: zp ZP_DWORD:93 [ sin16s_gen2::step#0 ] -Uplift Scope [sin16s] 27.5: zp ZP_DWORD:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 22: zp ZP_WORD:97 [ sin16s::return#0 ] 13: zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 4: zp ZP_DWORD:128 [ sin16s::$6 ] 4: zp ZP_WORD:136 [ sin16s::x2#0 ] 4: zp ZP_WORD:144 [ sin16s::x3_6#0 ] 4: zp ZP_WORD:150 [ sin16s::x4#0 ] 4: zp ZP_WORD:154 [ sin16s::x5#0 ] 4: zp ZP_WORD:156 [ sin16s::x5_128#0 ] 1: zp ZP_WORD:140 [ sin16s::x3#0 ] 1: zp ZP_WORD:158 [ sin16s::usinx#1 ] 0.64: zp ZP_WORD:132 [ sin16s::x1#0 ] 0.33: zp ZP_WORD:146 [ sin16s::usinx#0 ] 0.06: zp ZP_BYTE:35 [ sin16s::isUpper#2 ] -Uplift Scope [mulu16_sel] 24: zp ZP_WORD:42 [ 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:44 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] 4: zp ZP_WORD:134 [ mulu16_sel::return#0 ] 4: zp ZP_WORD:138 [ mulu16_sel::return#1 ] 4: zp ZP_WORD:142 [ mulu16_sel::return#2 ] 4: zp ZP_WORD:148 [ mulu16_sel::return#10 ] 4: zp ZP_WORD:152 [ mulu16_sel::return#11 ] 4: zp ZP_DWORD:164 [ mulu16_sel::$0 ] 4: zp ZP_DWORD:168 [ mulu16_sel::$1 ] 1.71: zp ZP_WORD:172 [ mulu16_sel::return#12 ] 0.33: zp ZP_BYTE:46 [ mulu16_sel::select#5 ] -Uplift Scope [mul16s] 22: zp ZP_DWORD:101 [ mul16s::return#2 ] 20: zp ZP_WORD:117 [ mul16s::$5 ] 12: zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] 4.33: zp ZP_DWORD:123 [ mul16s::return#0 ] 4: zp ZP_WORD:119 [ mul16s::$6 ] 4: zp ZP_WORD:121 [ mul16s::$16 ] 2.6: zp ZP_WORD:99 [ mul16s::a#0 ] +Uplift Scope [sin16s] 27.5: zp ZP_DWORD:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 22: zp ZP_WORD:97 [ sin16s::return#0 ] 13: zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 4: zp ZP_DWORD:126 [ sin16s::$6 ] 4: zp ZP_WORD:134 [ sin16s::x2#0 ] 4: zp ZP_WORD:142 [ sin16s::x3_6#0 ] 4: zp ZP_WORD:148 [ sin16s::x4#0 ] 4: zp ZP_WORD:152 [ sin16s::x5#0 ] 4: zp ZP_WORD:154 [ sin16s::x5_128#0 ] 1: zp ZP_WORD:138 [ sin16s::x3#0 ] 1: zp ZP_WORD:156 [ sin16s::usinx#1 ] 0.64: zp ZP_WORD:130 [ sin16s::x1#0 ] 0.33: zp ZP_WORD:144 [ sin16s::usinx#0 ] 0.06: zp ZP_BYTE:35 [ sin16s::isUpper#2 ] +Uplift Scope [mulu16_sel] 24: zp ZP_WORD:42 [ 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:44 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] 4: zp ZP_WORD:132 [ mulu16_sel::return#0 ] 4: zp ZP_WORD:136 [ mulu16_sel::return#1 ] 4: zp ZP_WORD:140 [ mulu16_sel::return#2 ] 4: zp ZP_WORD:146 [ mulu16_sel::return#10 ] 4: zp ZP_WORD:150 [ mulu16_sel::return#11 ] 4: zp ZP_DWORD:162 [ mulu16_sel::$0 ] 4: zp ZP_DWORD:166 [ mulu16_sel::$1 ] 1.71: zp ZP_WORD:170 [ mulu16_sel::return#12 ] 0.33: zp ZP_BYTE:46 [ mulu16_sel::select#5 ] +Uplift Scope [mul16s] 22: zp ZP_DWORD:101 [ mul16s::return#2 ] 12: zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] 4.33: zp ZP_DWORD:121 [ mul16s::return#0 ] 4: zp ZP_WORD:117 [ mul16s::$6 ] 4: zp ZP_WORD:119 [ mul16s::$16 ] 2.6: zp ZP_WORD:99 [ mul16s::a#0 ] Uplift Scope [fill] 33: zp ZP_WORD:63 [ fill::addr#2 fill::addr#1 ] -Uplift Scope [div32u16u] 4: zp ZP_DWORD:89 [ div32u16u::return#2 ] 4: zp ZP_WORD:180 [ div32u16u::quotient_lo#0 ] 1.33: zp ZP_DWORD:182 [ div32u16u::return#0 ] 0.8: zp ZP_WORD:176 [ div32u16u::quotient_hi#0 ] -Uplift Scope [] 0.8: zp ZP_WORD:188 [ rem16u#1 ] +Uplift Scope [div32u16u] 4: zp ZP_DWORD:89 [ div32u16u::return#2 ] 4: zp ZP_WORD:178 [ div32u16u::quotient_lo#0 ] 1.33: zp ZP_DWORD:180 [ div32u16u::return#0 ] 0.8: zp ZP_WORD:174 [ div32u16u::quotient_hi#0 ] +Uplift Scope [] 0.8: zp ZP_WORD:186 [ rem16u#1 ] Uplift Scope [main] -Uplifting [mul16u] best 36841 combination zp ZP_DWORD:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:31 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:23 [ mul16u::b#2 mul16u::b#1 ] zp ZP_DWORD:113 [ mul16u::return#2 ] zp ZP_DWORD:160 [ mul16u::return#3 ] -Uplifting [wrap_y] best 36658 combination zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] reg byte a [ wrap_y::return#0 ] reg byte a [ wrap_y::return#1 ] reg byte a [ wrap_y::return#2 ] -Uplifting [bitmap_clear] best 35758 combination zp ZP_WORD:55 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp ZP_WORD:190 [ bitmap_clear::$3 ] -Uplifting [divr16u] best 35548 combination zp ZP_WORD:47 [ 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:51 [ 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:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:174 [ divr16u::return#2 ] zp ZP_WORD:178 [ divr16u::return#3 ] -Uplifting [bitmap_init] best 35048 combination zp ZP_WORD:61 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:194 [ bitmap_init::$5 ] zp ZP_BYTE:195 [ bitmap_init::$6 ] zp ZP_BYTE:196 [ bitmap_init::$7 ] zp ZP_BYTE:192 [ bitmap_init::$3 ] +Uplifting [mul16u] best 36829 combination zp ZP_DWORD:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:31 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:23 [ mul16u::b#2 mul16u::b#1 ] zp ZP_DWORD:113 [ mul16u::return#2 ] zp ZP_DWORD:158 [ mul16u::return#3 ] +Uplifting [wrap_y] best 36646 combination zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] reg byte a [ wrap_y::return#0 ] reg byte a [ wrap_y::return#1 ] reg byte a [ wrap_y::return#2 ] +Uplifting [bitmap_clear] best 35746 combination zp ZP_WORD:55 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp ZP_WORD:188 [ bitmap_clear::$3 ] +Uplifting [divr16u] best 35536 combination zp ZP_WORD:47 [ 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:51 [ 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:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:172 [ divr16u::return#2 ] zp ZP_WORD:176 [ divr16u::return#3 ] +Uplifting [bitmap_init] best 35036 combination zp ZP_WORD:61 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:192 [ bitmap_init::$5 ] zp ZP_BYTE:193 [ bitmap_init::$6 ] zp ZP_BYTE:194 [ bitmap_init::$7 ] zp ZP_BYTE:190 [ bitmap_init::$3 ] Limited combination testing to 100 combinations of 61440 possible. -Uplifting [render_sine] best 34968 combination zp ZP_WORD:65 [ render_sine::$0 ] zp ZP_WORD:67 [ render_sine::$1 ] zp ZP_WORD:69 [ render_sine::sin_val#0 ] zp ZP_WORD:73 [ render_sine::$4 ] zp ZP_WORD:75 [ render_sine::$5 ] zp ZP_WORD:77 [ render_sine::sin2_val#0 ] zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] reg byte x [ render_sine::ypos#0 ] reg byte x [ render_sine::ypos2#0 ] -Uplifting [bitmap_plot] best 34901 combination reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp ZP_WORD:7 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] zp ZP_WORD:83 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:85 [ bitmap_plot::plotter#1 ] zp ZP_WORD:81 [ bitmap_plot::$3 ] -Uplifting [sin16s_gen2] best 34901 combination zp ZP_DWORD:105 [ sin16s_gen2::$5 ] zp ZP_WORD:111 [ sin16s_gen2::$8 ] zp ZP_WORD:17 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp ZP_WORD:109 [ sin16s_gen2::$6 ] zp ZP_DWORD:11 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp ZP_WORD:15 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp ZP_DWORD:93 [ sin16s_gen2::step#0 ] -Uplifting [sin16s] best 34901 combination zp ZP_DWORD:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:97 [ sin16s::return#0 ] zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:128 [ sin16s::$6 ] zp ZP_WORD:136 [ sin16s::x2#0 ] zp ZP_WORD:144 [ sin16s::x3_6#0 ] zp ZP_WORD:150 [ sin16s::x4#0 ] zp ZP_WORD:154 [ sin16s::x5#0 ] zp ZP_WORD:156 [ sin16s::x5_128#0 ] zp ZP_WORD:140 [ sin16s::x3#0 ] zp ZP_WORD:158 [ sin16s::usinx#1 ] zp ZP_WORD:132 [ sin16s::x1#0 ] zp ZP_WORD:146 [ sin16s::usinx#0 ] zp ZP_BYTE:35 [ sin16s::isUpper#2 ] -Uplifting [mulu16_sel] best 34885 combination zp ZP_WORD:42 [ 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:44 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:134 [ mulu16_sel::return#0 ] zp ZP_WORD:138 [ mulu16_sel::return#1 ] zp ZP_WORD:142 [ mulu16_sel::return#2 ] zp ZP_WORD:148 [ mulu16_sel::return#10 ] zp ZP_WORD:152 [ mulu16_sel::return#11 ] zp ZP_DWORD:164 [ mulu16_sel::$0 ] zp ZP_DWORD:168 [ mulu16_sel::$1 ] zp ZP_WORD:172 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] -Uplifting [mul16s] best 34885 combination zp ZP_DWORD:101 [ mul16s::return#2 ] zp ZP_WORD:117 [ mul16s::$5 ] zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp ZP_DWORD:123 [ mul16s::return#0 ] zp ZP_WORD:119 [ mul16s::$6 ] zp ZP_WORD:121 [ mul16s::$16 ] zp ZP_WORD:99 [ mul16s::a#0 ] -Uplifting [fill] best 34885 combination zp ZP_WORD:63 [ fill::addr#2 fill::addr#1 ] -Uplifting [div32u16u] best 34885 combination zp ZP_DWORD:89 [ div32u16u::return#2 ] zp ZP_WORD:180 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:182 [ div32u16u::return#0 ] zp ZP_WORD:176 [ div32u16u::quotient_hi#0 ] -Uplifting [] best 34885 combination zp ZP_WORD:188 [ rem16u#1 ] -Uplifting [main] best 34885 combination -Attempting to uplift remaining variables inzp ZP_BYTE:194 [ bitmap_init::$5 ] -Uplifting [bitmap_init] best 34825 combination reg byte a [ bitmap_init::$5 ] -Attempting to uplift remaining variables inzp ZP_BYTE:195 [ bitmap_init::$6 ] -Uplifting [bitmap_init] best 34765 combination reg byte a [ bitmap_init::$6 ] -Attempting to uplift remaining variables inzp ZP_BYTE:196 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 34705 combination reg byte a [ bitmap_init::$7 ] +Uplifting [render_sine] best 34956 combination zp ZP_WORD:65 [ render_sine::$0 ] zp ZP_WORD:67 [ render_sine::$1 ] zp ZP_WORD:69 [ render_sine::sin_val#0 ] zp ZP_WORD:73 [ render_sine::$4 ] zp ZP_WORD:75 [ render_sine::$5 ] zp ZP_WORD:77 [ render_sine::sin2_val#0 ] zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] reg byte x [ render_sine::ypos#0 ] reg byte x [ render_sine::ypos2#0 ] +Uplifting [bitmap_plot] best 34889 combination reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp ZP_WORD:7 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] zp ZP_WORD:83 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:85 [ bitmap_plot::plotter#1 ] zp ZP_WORD:81 [ bitmap_plot::$3 ] +Uplifting [sin16s_gen2] best 34889 combination zp ZP_DWORD:105 [ sin16s_gen2::$5 ] zp ZP_WORD:111 [ sin16s_gen2::$8 ] zp ZP_WORD:17 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp ZP_WORD:109 [ sin16s_gen2::$6 ] zp ZP_DWORD:11 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp ZP_WORD:15 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp ZP_DWORD:93 [ sin16s_gen2::step#0 ] +Uplifting [sin16s] best 34889 combination zp ZP_DWORD:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:97 [ sin16s::return#0 ] zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:126 [ sin16s::$6 ] zp ZP_WORD:134 [ sin16s::x2#0 ] zp ZP_WORD:142 [ sin16s::x3_6#0 ] zp ZP_WORD:148 [ sin16s::x4#0 ] zp ZP_WORD:152 [ sin16s::x5#0 ] zp ZP_WORD:154 [ sin16s::x5_128#0 ] zp ZP_WORD:138 [ sin16s::x3#0 ] zp ZP_WORD:156 [ sin16s::usinx#1 ] zp ZP_WORD:130 [ sin16s::x1#0 ] zp ZP_WORD:144 [ sin16s::usinx#0 ] zp ZP_BYTE:35 [ sin16s::isUpper#2 ] +Uplifting [mulu16_sel] best 34873 combination zp ZP_WORD:42 [ 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:44 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:132 [ mulu16_sel::return#0 ] zp ZP_WORD:136 [ mulu16_sel::return#1 ] zp ZP_WORD:140 [ mulu16_sel::return#2 ] zp ZP_WORD:146 [ mulu16_sel::return#10 ] zp ZP_WORD:150 [ mulu16_sel::return#11 ] zp ZP_DWORD:162 [ mulu16_sel::$0 ] zp ZP_DWORD:166 [ mulu16_sel::$1 ] zp ZP_WORD:170 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] +Uplifting [mul16s] best 34873 combination zp ZP_DWORD:101 [ mul16s::return#2 ] zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp ZP_DWORD:121 [ mul16s::return#0 ] zp ZP_WORD:117 [ mul16s::$6 ] zp ZP_WORD:119 [ mul16s::$16 ] zp ZP_WORD:99 [ mul16s::a#0 ] +Uplifting [fill] best 34873 combination zp ZP_WORD:63 [ fill::addr#2 fill::addr#1 ] +Uplifting [div32u16u] best 34873 combination zp ZP_DWORD:89 [ div32u16u::return#2 ] zp ZP_WORD:178 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:180 [ div32u16u::return#0 ] zp ZP_WORD:174 [ div32u16u::quotient_hi#0 ] +Uplifting [] best 34873 combination zp ZP_WORD:186 [ rem16u#1 ] +Uplifting [main] best 34873 combination +Attempting to uplift remaining variables inzp ZP_BYTE:192 [ bitmap_init::$5 ] +Uplifting [bitmap_init] best 34813 combination reg byte a [ bitmap_init::$5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:193 [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 34753 combination reg byte a [ bitmap_init::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:194 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 34693 combination reg byte a [ bitmap_init::$7 ] Attempting to uplift remaining variables inzp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] -Uplifting [bitmap_clear] best 34705 combination zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:192 [ bitmap_init::$3 ] -Uplifting [bitmap_init] best 34705 combination zp ZP_BYTE:192 [ bitmap_init::$3 ] +Uplifting [bitmap_clear] best 34693 combination zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:190 [ bitmap_init::$3 ] +Uplifting [bitmap_init] best 34693 combination zp ZP_BYTE:190 [ bitmap_init::$3 ] Attempting to uplift remaining variables inzp ZP_BYTE:35 [ sin16s::isUpper#2 ] -Uplifting [sin16s] best 34705 combination zp ZP_BYTE:35 [ sin16s::isUpper#2 ] +Uplifting [sin16s] best 34693 combination zp ZP_BYTE:35 [ sin16s::isUpper#2 ] Coalescing zero page register with common assignment [ zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] ] with [ zp ZP_WORD:7 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] ] - score: 2 -Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp ZP_WORD:158 [ sin16s::usinx#1 ] ] - score: 2 -Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ 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:140 [ sin16s::x3#0 ] ] - score: 2 -Coalescing zero page register with common assignment [ zp ZP_WORD:47 [ 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:188 [ rem16u#1 ] ] - score: 2 +Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp ZP_WORD:156 [ sin16s::usinx#1 ] ] - score: 2 +Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ 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:138 [ sin16s::x3#0 ] ] - score: 2 +Coalescing zero page register with common assignment [ zp ZP_WORD:47 [ 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:186 [ rem16u#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] ] with [ zp ZP_WORD:69 [ render_sine::sin_val#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 ] ] with [ zp ZP_WORD:77 [ render_sine::sin2_val#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] ] with [ zp ZP_DWORD:113 [ mul16u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 ] ] with [ zp ZP_DWORD:123 [ mul16s::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 ] ] with [ zp ZP_DWORD:121 [ mul16s::return#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:23 [ mul16u::b#2 mul16u::b#1 ] ] with [ zp ZP_WORD:44 [ 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:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] ] with [ zp ZP_DWORD:160 [ mul16u::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] ] with [ zp ZP_DWORD:128 [ sin16s::$6 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] ] with [ zp ZP_DWORD:158 [ mul16u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] ] with [ zp ZP_DWORD:126 [ sin16s::$6 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 ] ] with [ zp ZP_WORD:97 [ sin16s::return#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ 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:136 [ sin16s::x2#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ 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:150 [ sin16s::x4#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:174 [ divr16u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:178 [ divr16u::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:55 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] ] with [ zp ZP_WORD:190 [ bitmap_clear::$3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ 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:134 [ sin16s::x2#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ 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:148 [ sin16s::x4#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:172 [ divr16u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:176 [ divr16u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:55 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] ] with [ zp ZP_WORD:188 [ bitmap_clear::$3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:65 [ render_sine::$0 ] ] with [ zp ZP_WORD:67 [ render_sine::$1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:73 [ render_sine::$4 ] ] with [ zp ZP_WORD:75 [ render_sine::$5 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:81 [ bitmap_plot::$3 ] ] with [ zp ZP_WORD:85 [ bitmap_plot::plotter#1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:89 [ div32u16u::return#2 ] ] with [ zp ZP_DWORD:93 [ sin16s_gen2::step#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:89 [ div32u16u::return#2 sin16s_gen2::step#0 ] ] with [ zp ZP_DWORD:182 [ div32u16u::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:89 [ div32u16u::return#2 sin16s_gen2::step#0 ] ] with [ zp ZP_DWORD:180 [ div32u16u::return#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:101 [ mul16s::return#2 ] ] with [ zp ZP_DWORD:105 [ sin16s_gen2::$5 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:109 [ sin16s_gen2::$6 ] ] with [ zp ZP_WORD:111 [ sin16s_gen2::$8 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:119 [ mul16s::$6 ] ] with [ zp ZP_WORD:121 [ mul16s::$16 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:134 [ mulu16_sel::return#0 ] ] with [ zp ZP_WORD:172 [ mulu16_sel::return#12 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:142 [ mulu16_sel::return#2 ] ] with [ zp ZP_WORD:144 [ sin16s::x3_6#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:152 [ mulu16_sel::return#11 ] ] with [ zp ZP_WORD:154 [ sin16s::x5#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:164 [ mulu16_sel::$0 ] ] with [ zp ZP_DWORD:168 [ mulu16_sel::$1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:117 [ mul16s::$6 ] ] with [ zp ZP_WORD:119 [ mul16s::$16 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:132 [ mulu16_sel::return#0 ] ] with [ zp ZP_WORD:170 [ mulu16_sel::return#12 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:140 [ mulu16_sel::return#2 ] ] with [ zp ZP_WORD:142 [ sin16s::x3_6#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:150 [ mulu16_sel::return#11 ] ] with [ zp ZP_WORD:152 [ sin16s::x5#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:162 [ mulu16_sel::$0 ] ] with [ zp ZP_DWORD:166 [ mulu16_sel::$1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 ] ] with [ zp ZP_WORD:65 [ render_sine::$0 render_sine::$1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 ] ] with [ zp ZP_WORD:73 [ render_sine::$4 render_sine::$5 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 ] ] with [ zp ZP_DWORD:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:19 [ 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:101 [ mul16s::return#2 sin16s_gen2::$5 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 ] ] with [ zp ZP_WORD:99 [ mul16s::a#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 ] ] with [ zp ZP_WORD:146 [ sin16s::usinx#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ 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:138 [ mulu16_sel::return#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ 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:148 [ mulu16_sel::return#10 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 ] ] with [ zp ZP_WORD:180 [ div32u16u::quotient_lo#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:134 [ mulu16_sel::return#0 mulu16_sel::return#12 ] ] with [ zp ZP_WORD:142 [ mulu16_sel::return#2 sin16s::x3_6#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:134 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 ] ] with [ zp ZP_WORD:152 [ mulu16_sel::return#11 sin16s::x5#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:19 [ 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:164 [ mulu16_sel::$0 mulu16_sel::$1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:134 [ 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:156 [ sin16s::x5_128#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 ] ] with [ zp ZP_WORD:144 [ sin16s::usinx#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ 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:136 [ mulu16_sel::return#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ 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:146 [ mulu16_sel::return#10 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 ] ] with [ zp ZP_WORD:178 [ div32u16u::quotient_lo#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:132 [ mulu16_sel::return#0 mulu16_sel::return#12 ] ] with [ zp ZP_WORD:140 [ mulu16_sel::return#2 sin16s::x3_6#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:132 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 ] ] with [ zp ZP_WORD:150 [ mulu16_sel::return#11 sin16s::x5#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:19 [ 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:162 [ mulu16_sel::$0 mulu16_sel::$1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:132 [ 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:154 [ sin16s::x5_128#0 ] ] - score: 1 Coalescing zero page register [ zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] ] with [ zp ZP_WORD:15 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] ] Coalescing zero page register [ zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] ] with [ zp ZP_WORD:47 [ 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:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 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:55 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 ] ] Coalescing zero page register [ zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 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 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 ] ] with [ zp ZP_WORD:61 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] Coalescing zero page register [ zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 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 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] with [ zp ZP_WORD:63 [ fill::addr#2 fill::addr#1 ] ] -Coalescing zero page register [ zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 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 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 fill::addr#2 fill::addr#1 ] ] with [ zp ZP_WORD:117 [ mul16s::$5 ] ] Coalescing zero page register [ zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] ] with [ zp ZP_WORD:17 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] ] Coalescing zero page register [ zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 sin16s_gen2::i#2 sin16s_gen2::i#1 ] ] with [ zp ZP_WORD:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] ] Coalescing zero page register [ zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 ] ] with [ zp ZP_WORD:23 [ 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 ] ] Coalescing zero page register [ zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 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:51 [ 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:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 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:81 [ bitmap_plot::$3 bitmap_plot::plotter#1 ] ] Coalescing zero page register [ zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 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 bitmap_plot::$3 bitmap_plot::plotter#1 ] ] with [ zp ZP_WORD:109 [ sin16s_gen2::$6 sin16s_gen2::$8 ] ] -Coalescing zero page register [ zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 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 bitmap_plot::$3 bitmap_plot::plotter#1 sin16s_gen2::$6 sin16s_gen2::$8 ] ] with [ zp ZP_WORD:119 [ mul16s::$6 mul16s::$16 ] ] -Coalescing zero page register [ zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 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 bitmap_plot::$3 bitmap_plot::plotter#1 sin16s_gen2::$6 sin16s_gen2::$8 mul16s::$6 mul16s::$16 ] ] with [ zp ZP_WORD:134 [ 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:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 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 bitmap_plot::$3 bitmap_plot::plotter#1 sin16s_gen2::$6 sin16s_gen2::$8 ] ] with [ zp ZP_WORD:117 [ mul16s::$6 mul16s::$16 ] ] +Coalescing zero page register [ zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 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 bitmap_plot::$3 bitmap_plot::plotter#1 sin16s_gen2::$6 sin16s_gen2::$8 mul16s::$6 mul16s::$16 ] ] with [ zp ZP_WORD:132 [ 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_DWORD:19 [ 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:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$6 ] ] Coalescing zero page register [ zp ZP_WORD:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] ] with [ zp ZP_WORD:83 [ bitmap_plot::$1 ] ] -Coalescing zero page register [ zp ZP_WORD:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 bitmap_plot::$1 ] ] with [ zp ZP_WORD:176 [ div32u16u::quotient_hi#0 ] ] +Coalescing zero page register [ zp ZP_WORD:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 bitmap_plot::$1 ] ] with [ zp ZP_WORD:174 [ div32u16u::quotient_hi#0 ] ] Coalescing zero page register [ zp ZP_BYTE:35 [ sin16s::isUpper#2 ] ] with [ zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:35 [ sin16s::isUpper#2 bitmap_clear::y#4 bitmap_clear::y#1 ] ] with [ zp ZP_BYTE:192 [ bitmap_init::$3 ] ] +Coalescing zero page register [ zp ZP_BYTE:35 [ sin16s::isUpper#2 bitmap_clear::y#4 bitmap_clear::y#1 ] ] with [ zp ZP_BYTE:190 [ bitmap_init::$3 ] ] Allocated (was zp ZP_WORD:9) zp ZP_WORD:6 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 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 bitmap_plot::$3 bitmap_plot::plotter#1 sin16s_gen2::$6 sin16s_gen2::$8 mul16s::$6 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_DWORD:11) zp ZP_DWORD:8 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] Allocated (was zp ZP_DWORD:19) zp ZP_DWORD:12 [ 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::$6 ] @@ -5928,7 +5908,7 @@ Allocated (was zp ZP_BYTE:35) zp ZP_BYTE:22 [ sin16s::isUpper#2 bitmap_clear::y# Allocated (was zp ZP_WORD:40) 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:42) 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:89) zp ZP_DWORD:27 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ] -Allocated (was zp ZP_WORD:132) zp ZP_WORD:31 [ sin16s::x1#0 ] +Allocated (was zp ZP_WORD:130) zp ZP_WORD:31 [ sin16s::x1#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -6040,7 +6020,7 @@ main: { lda #toD0181_return sta D018 //SEG28 [15] call fill - //SEG29 [224] phi from main::@8 to fill [phi:main::@8->fill] + //SEG29 [223] phi from main::@8 to fill [phi:main::@8->fill] fill_from_b8: jsr fill //SEG30 [16] phi from main::@8 to main::@9 [phi:main::@8->main::@9] @@ -6049,7 +6029,7 @@ main: { //SEG31 main::@9 b9: //SEG32 [17] call bitmap_init - //SEG33 [201] phi from main::@9 to bitmap_init [phi:main::@9->bitmap_init] + //SEG33 [200] phi from main::@9 to bitmap_init [phi:main::@9->bitmap_init] bitmap_init_from_b9: jsr bitmap_init //SEG34 [18] phi from main::@9 to main::@10 [phi:main::@9->main::@10] @@ -6388,7 +6368,7 @@ sin16s_gen2: { .label x = 8 .label i = 4 //SEG128 [71] call div32u16u - //SEG129 [162] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG129 [161] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] div32u16u_from_sin16s_gen2: jsr div32u16u //SEG130 [72] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 @@ -6515,7 +6495,6 @@ sin16s_gen2: { // Fixes offsets introduced by using unsigned multiplication // mul16s(signed word zeropage($17) a) mul16s: { - .label _5 = 2 .label _6 = 6 .label _16 = 6 .label m = $c @@ -6527,10 +6506,10 @@ mul16s: { lda a+1 sta mul16u.a+1 //SEG162 [91] call mul16u - //SEG163 [102] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG163 [101] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //SEG164 [102] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy - //SEG165 [102] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 + //SEG164 [101] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG165 [101] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl @@ -6547,17 +6526,12 @@ mul16s: { jmp b3 //SEG170 mul16s::@3 b3: - //SEG171 [95] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 - lda m+2 - sta _5 - lda m+3 - sta _5+1 - //SEG172 [96] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG171 [95] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG173 [97] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG172 [96] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 lda _16 sec sbc #sin16s_gen2.ampl sta _16+1 - //SEG174 [98] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG173 [97] (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 - //SEG175 [99] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG174 [98] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] b1_from_b3: b1_from_b6: - //SEG176 [99] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG175 [98] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy jmp b1 - //SEG177 mul16s::@1 + //SEG176 mul16s::@1 b1: jmp b2 - //SEG178 mul16s::@2 + //SEG177 mul16s::@2 b2: - //SEG179 [100] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG178 [99] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 jmp breturn - //SEG180 mul16s::@return + //SEG179 mul16s::@return breturn: - //SEG181 [101] return + //SEG180 [100] return rts } -//SEG182 mul16u +//SEG181 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage($10) a, word zeropage(6) b) mul16u: { @@ -6596,7 +6570,7 @@ mul16u: { .label res = $c .label return = $c .label b = 6 - //SEG183 [103] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG182 [102] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -6604,42 +6578,42 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG184 [104] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG183 [103] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG185 [104] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG186 [104] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG184 [103] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG185 [103] 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 - //SEG187 [104] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG186 [103] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG188 mul16u::@1 + //SEG187 mul16u::@1 b1: - //SEG189 [105] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG188 [104] 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 - //SEG190 mul16u::@return + //SEG189 mul16u::@return breturn: - //SEG191 [106] return + //SEG190 [105] return rts - //SEG192 mul16u::@2 + //SEG191 mul16u::@2 b2: - //SEG193 [107] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG192 [106] (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 - //SEG194 [108] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 + //SEG193 [107] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4_from_b2 jmp b7 - //SEG195 mul16u::@7 + //SEG194 mul16u::@7 b7: - //SEG196 [109] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG195 [108] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -6653,30 +6627,30 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG197 [110] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG196 [109] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG198 [110] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG197 [109] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG199 mul16u::@4 + //SEG198 mul16u::@4 b4: - //SEG200 [111] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG199 [110] (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 - //SEG201 [112] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG200 [111] (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 - //SEG202 [104] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG201 [103] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //SEG203 [104] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG204 [104] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG205 [104] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG202 [103] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG203 [103] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG204 [103] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG206 sin16s +//SEG205 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 @@ -6695,7 +6669,7 @@ sin16s: { .label x5_128 = 6 .label sinx = $17 .label isUpper = $16 - //SEG207 [113] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG206 [112] 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 @@ -6713,9 +6687,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG208 sin16s::@4 + //SEG207 sin16s::@4 b4: - //SEG209 [114] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG208 [113] (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 - //SEG210 [115] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG209 [114] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //SEG211 [115] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG210 [114] 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 - //SEG212 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG211 [114] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG213 [115] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG212 [114] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG214 [115] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG213 [114] 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 - //SEG215 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG214 [114] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG216 sin16s::@1 + //SEG215 sin16s::@1 b1: - //SEG217 [116] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG216 [115] 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 @@ -6763,9 +6737,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG218 sin16s::@5 + //SEG217 sin16s::@5 b5: - //SEG219 [117] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG218 [116] (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 - //SEG220 [118] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG219 [117] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG221 [118] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG220 [117] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG222 sin16s::@2 + //SEG221 sin16s::@2 b2: - //SEG223 [119] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 + //SEG222 [118] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 ldy #3 !: asl _6 @@ -6795,80 +6769,80 @@ sin16s: { rol _6+3 dey bne !- - //SEG224 [120] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG223 [119] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG225 [121] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG224 [120] (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 - //SEG226 [122] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG225 [121] (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 - //SEG227 [123] call mulu16_sel - //SEG228 [153] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG226 [122] call mulu16_sel + //SEG227 [152] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG229 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG228 [152] 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 - //SEG230 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG231 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG229 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG230 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG232 [124] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + //SEG231 [123] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 jmp b8 - //SEG233 sin16s::@8 + //SEG232 sin16s::@8 b8: - //SEG234 [125] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG233 [124] (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 - //SEG235 [126] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - //SEG236 [127] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG234 [125] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG235 [126] (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 - //SEG237 [128] call mulu16_sel - //SEG238 [153] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG236 [127] call mulu16_sel + //SEG237 [152] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG239 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG238 [152] 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 - //SEG240 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy - //SEG241 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG239 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG240 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG242 [129] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG241 [128] (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 b9 - //SEG243 sin16s::@9 + //SEG242 sin16s::@9 b9: - //SEG244 [130] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - //SEG245 [131] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - //SEG246 [132] call mulu16_sel - //SEG247 [153] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG243 [129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG244 [130] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG245 [131] call mulu16_sel + //SEG246 [152] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG248 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG247 [152] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG249 [153] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG248 [152] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG250 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG249 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG251 [133] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + //SEG250 [132] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 jmp b10 - //SEG252 sin16s::@10 + //SEG251 sin16s::@10 b10: - //SEG253 [134] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - //SEG254 [135] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG252 [133] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + //SEG253 [134] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -6876,56 +6850,56 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG255 [136] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - //SEG256 [137] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG254 [135] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG255 [136] (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 - //SEG257 [138] call mulu16_sel - //SEG258 [153] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG256 [137] call mulu16_sel + //SEG257 [152] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG259 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG258 [152] 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 - //SEG260 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG261 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG259 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG260 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG262 [139] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG261 [138] (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 b11 - //SEG263 sin16s::@11 + //SEG262 sin16s::@11 b11: - //SEG264 [140] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - //SEG265 [141] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - //SEG266 [142] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG263 [139] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + //SEG264 [140] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG265 [141] (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 - //SEG267 [143] call mulu16_sel - //SEG268 [153] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG266 [142] call mulu16_sel + //SEG267 [152] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] mulu16_sel_from_b11: - //SEG269 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG268 [152] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG270 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy - //SEG271 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + //SEG269 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG270 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG272 [144] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + //SEG271 [143] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 jmp b12 - //SEG273 sin16s::@12 + //SEG272 sin16s::@12 b12: - //SEG274 [145] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - //SEG275 [146] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 + //SEG273 [144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + //SEG274 [145] (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 !- - //SEG276 [147] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG275 [146] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -6933,14 +6907,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG277 [148] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 + //SEG276 [147] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b15 jmp b6 - //SEG278 sin16s::@6 + //SEG277 sin16s::@6 b6: - //SEG279 [149] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG278 [148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda sinx eor #$ff @@ -6950,24 +6924,24 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG280 [150] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG279 [149] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] b3_from_b15: b3_from_b6: - //SEG281 [150] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG280 [149] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG282 sin16s::@3 + //SEG281 sin16s::@3 b3: jmp breturn - //SEG283 sin16s::@return + //SEG282 sin16s::@return breturn: - //SEG284 [151] return + //SEG283 [150] return rts - //SEG285 sin16s::@15 + //SEG284 sin16s::@15 b15: - //SEG286 [152] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG285 [151] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 jmp b3_from_b15 } -//SEG287 mulu16_sel +//SEG286 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(6) v2, byte register(X) select) @@ -6979,24 +6953,24 @@ mulu16_sel: { .label return = 6 .label return_1 = $19 .label return_10 = $19 - //SEG288 [154] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG287 [153] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG289 [155] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - //SEG290 [156] call mul16u - //SEG291 [102] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG288 [154] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + //SEG289 [155] call mul16u + //SEG290 [101] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] mul16u_from_mulu16_sel: - //SEG292 [102] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy - //SEG293 [102] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy + //SEG291 [101] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG292 [101] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - //SEG294 [157] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG293 [156] (dword) mul16u::return#3 ← (dword) mul16u::res#2 jmp b2 - //SEG295 mulu16_sel::@2 + //SEG294 mulu16_sel::@2 b2: - //SEG296 [158] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - //SEG297 [159] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + //SEG295 [157] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + //SEG296 [158] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -7007,64 +6981,64 @@ mulu16_sel: { dex bne !- !e: - //SEG298 [160] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG297 [159] (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 - //SEG299 mulu16_sel::@return + //SEG298 mulu16_sel::@return breturn: - //SEG300 [161] return + //SEG299 [160] return rts } -//SEG301 div32u16u +//SEG300 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 = $10 .label quotient_lo = 6 .label return = $1b - //SEG302 [163] call divr16u - //SEG303 [172] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG301 [162] call divr16u + //SEG302 [171] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG304 [172] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG303 [171] 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 - //SEG305 [172] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG304 [171] 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 - //SEG306 [164] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG305 [163] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp b2 - //SEG307 div32u16u::@2 + //SEG306 div32u16u::@2 b2: - //SEG308 [165] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG307 [164] (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 - //SEG309 [166] (word) divr16u::rem#4 ← (word) rem16u#1 - //SEG310 [167] call divr16u - //SEG311 [172] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG308 [165] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG309 [166] call divr16u + //SEG310 [171] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] divr16u_from_b2: - //SEG312 [172] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG311 [171] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG313 [172] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG312 [171] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG314 [168] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG313 [167] (word) divr16u::return#3 ← (word) divr16u::return#0 jmp b3 - //SEG315 div32u16u::@3 + //SEG314 div32u16u::@3 b3: - //SEG316 [169] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - //SEG317 [170] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG315 [168] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG316 [169] (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 @@ -7074,12 +7048,12 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG318 div32u16u::@return + //SEG317 div32u16u::@return breturn: - //SEG319 [171] return + //SEG318 [170] return rts } -//SEG320 divr16u +//SEG319 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 @@ -7090,58 +7064,58 @@ divr16u: { .label dividend = 4 .label quotient = 6 .label return = 6 - //SEG321 [173] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG320 [172] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG322 [173] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG321 [172] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG323 [173] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG322 [172] 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 - //SEG324 [173] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG325 [173] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG323 [172] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG324 [172] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG326 [173] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG325 [172] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG327 [173] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG328 [173] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG329 [173] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG330 [173] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG326 [172] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG327 [172] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG328 [172] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG329 [172] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG331 divr16u::@1 + //SEG330 divr16u::@1 b1: - //SEG332 [174] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG331 [173] (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 - //SEG333 [175] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG332 [174] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG334 [176] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG333 [175] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG335 [177] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG334 [176] 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 - //SEG336 divr16u::@4 + //SEG335 divr16u::@4 b4: - //SEG337 [178] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG336 [177] (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 - //SEG338 [179] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG337 [178] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG339 [179] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG338 [178] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG340 divr16u::@2 + //SEG339 divr16u::@2 b2: - //SEG341 [180] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG340 [179] (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 - //SEG342 [181] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG341 [180] (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 - //SEG343 [182] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG342 [181] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>SIN_SIZE bcc b3_from_b2 @@ -7151,14 +7125,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG344 divr16u::@5 + //SEG343 divr16u::@5 b5: - //SEG345 [183] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG344 [182] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG346 [184] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG345 [183] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #SIN_SIZE sta rem+1 - //SEG347 [185] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG346 [184] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG348 [185] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG349 [185] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG347 [184] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG348 [184] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG350 divr16u::@3 + //SEG349 divr16u::@3 b3: - //SEG351 [186] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG350 [185] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG352 [187] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG351 [186] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b3 jmp b6 - //SEG353 divr16u::@6 + //SEG352 divr16u::@6 b6: - //SEG354 [188] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG353 [187] (word) rem16u#1 ← (word) divr16u::rem#11 jmp breturn - //SEG355 divr16u::@return + //SEG354 divr16u::@return breturn: - //SEG356 [189] return + //SEG355 [188] return rts } -//SEG357 bitmap_clear +//SEG356 bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = 2 .label y = $16 .label _3 = 2 - //SEG358 [190] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG357 [189] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_ylo sta _3 lda bitmap_plot_yhi sta _3+1 - //SEG359 [191] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 - //SEG360 [192] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG358 [190] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + //SEG359 [191] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: - //SEG361 [192] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 + //SEG360 [191] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG362 [192] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG361 [191] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG363 [192] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG362 [191] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] b1_from_b3: - //SEG364 [192] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy - //SEG365 [192] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG363 [191] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG364 [191] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG366 bitmap_clear::@1 + //SEG365 bitmap_clear::@1 b1: - //SEG367 [193] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG366 [192] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] b2_from_b1: - //SEG368 [193] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 + //SEG367 [192] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG369 [193] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG368 [192] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG370 [193] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG369 [192] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] b2_from_b2: - //SEG371 [193] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy - //SEG372 [193] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG370 [192] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG371 [192] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG373 bitmap_clear::@2 + //SEG372 bitmap_clear::@2 b2: - //SEG374 [194] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG373 [193] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (bitmap),y - //SEG375 [195] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG374 [194] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG376 [196] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx + //SEG375 [195] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx - //SEG377 [197] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG376 [196] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$c8 bne b2_from_b2 jmp b3 - //SEG378 bitmap_clear::@3 + //SEG377 bitmap_clear::@3 b3: - //SEG379 [198] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG378 [197] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG380 [199] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG379 [198] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$28 bne b1_from_b3 jmp breturn - //SEG381 bitmap_clear::@return + //SEG380 bitmap_clear::@return breturn: - //SEG382 [200] return + //SEG381 [199] return rts } -//SEG383 bitmap_init +//SEG382 bitmap_init // Initialize bitmap plotting tables bitmap_init: { .label _3 = $16 .label yoffs = 2 - //SEG384 [202] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG383 [201] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - //SEG385 [202] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 + //SEG384 [201] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG386 [202] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 + //SEG385 [201] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 lda #$80 jmp b1 - //SEG387 [202] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG386 [201] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - //SEG388 [202] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG389 [202] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG387 [201] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG388 [201] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 - //SEG390 bitmap_init::@1 + //SEG389 bitmap_init::@1 b1: - //SEG391 [203] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG390 [202] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_bit,x - //SEG392 [204] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 + //SEG391 [203] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 lsr - //SEG393 [205] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuaa_neq_0_then_la1 + //SEG392 [204] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuaa_neq_0_then_la1 cmp #0 bne b10_from_b1 - //SEG394 [206] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG393 [205] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - //SEG395 [206] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 + //SEG394 [205] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 lda #$80 jmp b2 - //SEG396 bitmap_init::@2 + //SEG395 bitmap_init::@2 b2: - //SEG397 [207] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + //SEG396 [206] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - //SEG398 [208] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 + //SEG397 [207] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1_from_b2 - //SEG399 [209] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG398 [208] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - //SEG400 [209] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + //SEG399 [208] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #BITMAP sta yoffs+1 - //SEG401 [209] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 + //SEG400 [208] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG402 [209] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG401 [208] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - //SEG403 [209] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG404 [209] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG402 [208] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG403 [208] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 - //SEG405 bitmap_init::@3 + //SEG404 bitmap_init::@3 b3: - //SEG406 [210] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG405 [209] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 txa and #7 sta _3 - //SEG407 [211] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG406 [210] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG408 [212] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa + //SEG407 [211] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa ora _3 - //SEG409 [213] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG408 [212] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_ylo,x - //SEG410 [214] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG409 [213] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG411 [215] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG410 [214] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_yhi,x - //SEG412 [216] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG411 [215] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG413 [217] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG412 [216] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #7 bne b4_from_b3 jmp b7 - //SEG414 bitmap_init::@7 + //SEG413 bitmap_init::@7 b7: - //SEG415 [218] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG414 [217] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -7343,63 +7317,63 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG416 [219] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + //SEG415 [218] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] b4_from_b3: b4_from_b7: - //SEG417 [219] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy + //SEG416 [218] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy jmp b4 - //SEG418 bitmap_init::@4 + //SEG417 bitmap_init::@4 b4: - //SEG419 [220] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + //SEG418 [219] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - //SEG420 [221] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 + //SEG419 [220] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne b3_from_b4 jmp breturn - //SEG421 bitmap_init::@return + //SEG420 bitmap_init::@return breturn: - //SEG422 [222] return + //SEG421 [221] return rts - //SEG423 [223] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG422 [222] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] b10_from_b1: jmp b10 - //SEG424 bitmap_init::@10 + //SEG423 bitmap_init::@10 b10: - //SEG425 [206] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG424 [205] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] b2_from_b10: - //SEG426 [206] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG425 [205] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy jmp b2 } -//SEG427 fill +//SEG426 fill // Fill some memory with a value fill: { .const size = $3e8 .label end = SCREEN+size .label addr = 2 - //SEG428 [225] phi from fill to fill::@1 [phi:fill->fill::@1] + //SEG427 [224] phi from fill to fill::@1 [phi:fill->fill::@1] b1_from_fill: - //SEG429 [225] phi (byte*) fill::addr#2 = (const byte*) SCREEN#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 + //SEG428 [224] phi (byte*) fill::addr#2 = (const byte*) SCREEN#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta addr+1 jmp b1 - //SEG430 [225] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] + //SEG429 [224] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] b1_from_b1: - //SEG431 [225] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy + //SEG430 [224] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG432 fill::@1 + //SEG431 fill::@1 b1: - //SEG433 [226] *((byte*) fill::addr#2) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 + //SEG432 [225] *((byte*) fill::addr#2) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 lda #WHITE ldy #0 sta (addr),y - //SEG434 [227] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG433 [226] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG435 [228] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG434 [227] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 lda addr+1 cmp #>end bne b1_from_b1 @@ -7407,9 +7381,9 @@ fill: { cmp #((word))(const byte*) SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) (word~) mul16s::$16 $16 zp ZP_WORD:6 4.0 -(word~) mul16s::$5 $5 zp ZP_WORD:2 20.0 (word~) mul16s::$6 $6 zp ZP_WORD:6 4.0 (label) mul16s::@1 (label) mul16s::@2 @@ -8182,7 +8155,7 @@ FINAL SYMBOL TABLE (signed word) wrap_y::y#6 y zp ZP_WORD:6 203.0 (signed word) wrap_y::y#9 y zp ZP_WORD:6 24.0 -zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 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 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 fill::addr#2 fill::addr#1 mul16s::$5 ] +zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 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 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 fill::addr#2 fill::addr#1 ] zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp ZP_WORD:6 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 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 bitmap_plot::$3 bitmap_plot::plotter#1 sin16s_gen2::$6 sin16s_gen2::$8 mul16s::$6 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 ] @@ -8217,7 +8190,7 @@ reg byte a [ bitmap_init::$7 ] FINAL ASSEMBLER -Score: 28375 +Score: 28363 //SEG0 File Comments // Generate a big sinus and plot it on a bitmap @@ -8304,12 +8277,12 @@ main: { lda #toD0181_return sta D018 //SEG28 [15] call fill - //SEG29 [224] phi from main::@8 to fill [phi:main::@8->fill] + //SEG29 [223] phi from main::@8 to fill [phi:main::@8->fill] jsr fill //SEG30 [16] phi from main::@8 to main::@9 [phi:main::@8->main::@9] //SEG31 main::@9 //SEG32 [17] call bitmap_init - //SEG33 [201] phi from main::@9 to bitmap_init [phi:main::@9->bitmap_init] + //SEG33 [200] phi from main::@9 to bitmap_init [phi:main::@9->bitmap_init] jsr bitmap_init //SEG34 [18] phi from main::@9 to main::@10 [phi:main::@9->main::@10] //SEG35 main::@10 @@ -8597,7 +8570,7 @@ sin16s_gen2: { .label x = 8 .label i = 4 //SEG128 [71] call div32u16u - //SEG129 [162] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG129 [161] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] jsr div32u16u //SEG130 [72] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 //SEG131 sin16s_gen2::@3 @@ -8709,7 +8682,6 @@ sin16s_gen2: { // Fixes offsets introduced by using unsigned multiplication // mul16s(signed word zeropage($17) a) mul16s: { - .label _5 = 2 .label _6 = 6 .label _16 = 6 .label m = $c @@ -8721,9 +8693,9 @@ mul16s: { lda a+1 sta mul16u.a+1 //SEG162 [91] call mul16u - //SEG163 [102] phi from mul16s to mul16u [phi:mul16s->mul16u] - //SEG164 [102] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy - //SEG165 [102] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 + //SEG163 [101] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG164 [101] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG165 [101] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl @@ -8736,17 +8708,12 @@ mul16s: { lda a+1 bpl b2 //SEG170 mul16s::@3 - //SEG171 [95] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 - lda m+2 - sta _5 - lda m+3 - sta _5+1 - //SEG172 [96] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG171 [95] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG173 [97] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG172 [96] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 lda _16 sec sbc #sin16s_gen2.ampl sta _16+1 - //SEG174 [98] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG173 [97] (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 - //SEG175 [99] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] - //SEG176 [99] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy - //SEG177 mul16s::@1 - //SEG178 mul16s::@2 + //SEG174 [98] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG175 [98] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG176 mul16s::@1 + //SEG177 mul16s::@2 b2: - //SEG179 [100] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 - //SEG180 mul16s::@return - //SEG181 [101] return + //SEG178 [99] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG179 mul16s::@return + //SEG180 [100] return rts } -//SEG182 mul16u +//SEG181 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage($10) a, word zeropage(6) b) mul16u: { @@ -8778,7 +8745,7 @@ mul16u: { .label res = $c .label return = $c .label b = 6 - //SEG183 [103] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG182 [102] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -8786,34 +8753,34 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG184 [104] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] - //SEG185 [104] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG186 [104] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG183 [103] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG184 [103] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG185 [103] 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 - //SEG187 [104] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy - //SEG188 mul16u::@1 + //SEG186 [103] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG187 mul16u::@1 b1: - //SEG189 [105] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG188 [104] 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 - //SEG190 mul16u::@return - //SEG191 [106] return + //SEG189 mul16u::@return + //SEG190 [105] return rts - //SEG192 mul16u::@2 + //SEG191 mul16u::@2 b2: - //SEG193 [107] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG192 [106] (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 - //SEG194 [108] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 + //SEG193 [107] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 - //SEG195 mul16u::@7 - //SEG196 [109] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG194 mul16u::@7 + //SEG195 [108] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -8827,26 +8794,26 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG197 [110] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] - //SEG198 [110] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy - //SEG199 mul16u::@4 + //SEG196 [109] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG197 [109] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG198 mul16u::@4 b4: - //SEG200 [111] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG199 [110] (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 - //SEG201 [112] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG200 [111] (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 - //SEG202 [104] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] - //SEG203 [104] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG204 [104] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG205 [104] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG201 [103] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG202 [103] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG203 [103] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG204 [103] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG206 sin16s +//SEG205 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 @@ -8865,7 +8832,7 @@ sin16s: { .label x5_128 = 6 .label sinx = $17 .label isUpper = $16 - //SEG207 [113] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG206 [112] 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 @@ -8882,8 +8849,8 @@ sin16s: { cmp #PI_u4f28>>$10 sta x+3 - //SEG210 [115] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] - //SEG211 [115] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG209 [114] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG210 [114] 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 - //SEG212 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG211 [114] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG213 [115] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG212 [114] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b4: - //SEG214 [115] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG213 [114] 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 - //SEG215 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy - //SEG216 sin16s::@1 + //SEG214 [114] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG215 sin16s::@1 b1: - //SEG217 [116] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG216 [115] 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 @@ -8928,8 +8895,8 @@ sin16s: { cmp #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG220 [118] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] - //SEG221 [118] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy - //SEG222 sin16s::@2 + //SEG219 [117] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG220 [117] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG221 sin16s::@2 b2: - //SEG223 [119] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 + //SEG222 [118] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 ldy #3 !: asl _6 @@ -8956,71 +8923,71 @@ sin16s: { rol _6+3 dey bne !- - //SEG224 [120] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG223 [119] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG225 [121] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG224 [120] (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 - //SEG226 [122] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG225 [121] (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 - //SEG227 [123] call mulu16_sel - //SEG228 [153] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] - //SEG229 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG226 [122] call mulu16_sel + //SEG227 [152] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG228 [152] 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 - //SEG230 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG231 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG229 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG230 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG232 [124] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 - //SEG233 sin16s::@8 - //SEG234 [125] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG231 [123] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + //SEG232 sin16s::@8 + //SEG233 [124] (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 - //SEG235 [126] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - //SEG236 [127] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG234 [125] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG235 [126] (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 - //SEG237 [128] call mulu16_sel - //SEG238 [153] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] - //SEG239 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG236 [127] call mulu16_sel + //SEG237 [152] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG238 [152] 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 - //SEG240 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy - //SEG241 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG239 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG240 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG242 [129] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG241 [128] (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 - //SEG243 sin16s::@9 - //SEG244 [130] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - //SEG245 [131] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - //SEG246 [132] call mulu16_sel - //SEG247 [153] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] - //SEG248 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG242 sin16s::@9 + //SEG243 [129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG244 [130] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG245 [131] call mulu16_sel + //SEG246 [152] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG247 [152] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG249 [153] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG248 [152] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG250 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG249 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG251 [133] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 - //SEG252 sin16s::@10 - //SEG253 [134] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - //SEG254 [135] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG250 [132] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + //SEG251 sin16s::@10 + //SEG252 [133] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + //SEG253 [134] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -9028,50 +8995,50 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG255 [136] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - //SEG256 [137] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG254 [135] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG255 [136] (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 - //SEG257 [138] call mulu16_sel - //SEG258 [153] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] - //SEG259 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG256 [137] call mulu16_sel + //SEG257 [152] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG258 [152] 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 - //SEG260 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG261 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG259 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG260 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG262 [139] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG261 [138] (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 - //SEG263 sin16s::@11 - //SEG264 [140] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - //SEG265 [141] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - //SEG266 [142] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG262 sin16s::@11 + //SEG263 [139] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + //SEG264 [140] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG265 [141] (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 - //SEG267 [143] call mulu16_sel - //SEG268 [153] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] - //SEG269 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG266 [142] call mulu16_sel + //SEG267 [152] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG268 [152] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG270 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy - //SEG271 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + //SEG269 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG270 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG272 [144] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 - //SEG273 sin16s::@12 - //SEG274 [145] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - //SEG275 [146] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 + //SEG271 [143] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + //SEG272 sin16s::@12 + //SEG273 [144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + //SEG274 [145] (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 !- - //SEG276 [147] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG275 [146] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -9079,12 +9046,12 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG277 [148] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 + //SEG276 [147] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b3 - //SEG278 sin16s::@6 - //SEG279 [149] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG277 sin16s::@6 + //SEG278 [148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda sinx eor #$ff @@ -9094,17 +9061,17 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG280 [150] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] - //SEG281 [150] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy - //SEG282 sin16s::@3 + //SEG279 [149] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG280 [149] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG281 sin16s::@3 b3: - //SEG283 sin16s::@return - //SEG284 [151] return + //SEG282 sin16s::@return + //SEG283 [150] return rts - //SEG285 sin16s::@15 - //SEG286 [152] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG284 sin16s::@15 + //SEG285 [151] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 } -//SEG287 mulu16_sel +//SEG286 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(6) v2, byte register(X) select) @@ -9116,21 +9083,21 @@ mulu16_sel: { .label return = 6 .label return_1 = $19 .label return_10 = $19 - //SEG288 [154] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG287 [153] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG289 [155] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - //SEG290 [156] call mul16u - //SEG291 [102] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] - //SEG292 [102] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy - //SEG293 [102] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy + //SEG288 [154] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + //SEG289 [155] call mul16u + //SEG290 [101] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG291 [101] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG292 [101] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - //SEG294 [157] (dword) mul16u::return#3 ← (dword) mul16u::res#2 - //SEG295 mulu16_sel::@2 - //SEG296 [158] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - //SEG297 [159] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + //SEG293 [156] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG294 mulu16_sel::@2 + //SEG295 [157] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + //SEG296 [158] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -9141,55 +9108,55 @@ mulu16_sel: { dex bne !- !e: - //SEG298 [160] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG297 [159] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return lda _1+3 sta return+1 - //SEG299 mulu16_sel::@return - //SEG300 [161] return + //SEG298 mulu16_sel::@return + //SEG299 [160] return rts } -//SEG301 div32u16u +//SEG300 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 = $10 .label quotient_lo = 6 .label return = $1b - //SEG302 [163] call divr16u - //SEG303 [172] phi from div32u16u to divr16u [phi:div32u16u->divr16u] - //SEG304 [172] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG301 [162] call divr16u + //SEG302 [171] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG303 [171] 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 - //SEG305 [172] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG304 [171] 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 - //SEG306 [164] (word) divr16u::return#2 ← (word) divr16u::return#0 - //SEG307 div32u16u::@2 - //SEG308 [165] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG305 [163] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG306 div32u16u::@2 + //SEG307 [164] (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 - //SEG309 [166] (word) divr16u::rem#4 ← (word) rem16u#1 - //SEG310 [167] call divr16u - //SEG311 [172] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] - //SEG312 [172] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG308 [165] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG309 [166] call divr16u + //SEG310 [171] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG311 [171] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG313 [172] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG312 [171] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG314 [168] (word) divr16u::return#3 ← (word) divr16u::return#0 - //SEG315 div32u16u::@3 - //SEG316 [169] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - //SEG317 [170] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG313 [167] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG314 div32u16u::@3 + //SEG315 [168] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG316 [169] (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 @@ -9198,11 +9165,11 @@ div32u16u: { sta return lda quotient_lo+1 sta return+1 - //SEG318 div32u16u::@return - //SEG319 [171] return + //SEG317 div32u16u::@return + //SEG318 [170] return rts } -//SEG320 divr16u +//SEG319 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 @@ -9213,48 +9180,48 @@ divr16u: { .label dividend = 4 .label quotient = 6 .label return = 6 - //SEG321 [173] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - //SEG322 [173] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG320 [172] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG321 [172] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG323 [173] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG322 [172] 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 - //SEG324 [173] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG325 [173] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy - //SEG326 [173] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - //SEG327 [173] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG328 [173] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG329 [173] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG330 [173] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy - //SEG331 divr16u::@1 + //SEG323 [172] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG324 [172] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG325 [172] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG326 [172] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG327 [172] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG328 [172] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG329 [172] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG330 divr16u::@1 b1: - //SEG332 [174] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG331 [173] (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 - //SEG333 [175] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG332 [174] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG334 [176] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG333 [175] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG335 [177] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG334 [176] 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 - //SEG336 divr16u::@4 - //SEG337 [178] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG335 divr16u::@4 + //SEG336 [177] (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 - //SEG338 [179] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - //SEG339 [179] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy - //SEG340 divr16u::@2 + //SEG337 [178] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG338 [178] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG339 divr16u::@2 b2: - //SEG341 [180] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG340 [179] (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 - //SEG342 [181] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG341 [180] (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 - //SEG343 [182] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG342 [181] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>SIN_SIZE bcc b3 @@ -9263,13 +9230,13 @@ divr16u: { cmp #SIN_SIZE sta rem+1 - //SEG347 [185] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - //SEG348 [185] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG349 [185] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy - //SEG350 divr16u::@3 + //SEG346 [184] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG347 [184] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG348 [184] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG349 divr16u::@3 b3: - //SEG351 [186] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG350 [185] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG352 [187] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG351 [186] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG353 divr16u::@6 - //SEG354 [188] (word) rem16u#1 ← (word) divr16u::rem#11 - //SEG355 divr16u::@return - //SEG356 [189] return + //SEG352 divr16u::@6 + //SEG353 [187] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG354 divr16u::@return + //SEG355 [188] return rts } -//SEG357 bitmap_clear +//SEG356 bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = 2 .label y = $16 .label _3 = 2 - //SEG358 [190] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG357 [189] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_ylo sta _3 lda bitmap_plot_yhi sta _3+1 - //SEG359 [191] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 - //SEG360 [192] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] - //SEG361 [192] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 + //SEG358 [190] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + //SEG359 [191] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG360 [191] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG362 [192] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy - //SEG363 [192] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] - //SEG364 [192] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy - //SEG365 [192] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy - //SEG366 bitmap_clear::@1 + //SEG361 [191] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG362 [191] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG363 [191] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG364 [191] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG365 bitmap_clear::@1 b1: - //SEG367 [193] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] - //SEG368 [193] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 + //SEG366 [192] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG367 [192] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG369 [193] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy - //SEG370 [193] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] - //SEG371 [193] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy - //SEG372 [193] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy - //SEG373 bitmap_clear::@2 + //SEG368 [192] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG369 [192] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG370 [192] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG371 [192] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG372 bitmap_clear::@2 b2: - //SEG374 [194] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG373 [193] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (bitmap),y - //SEG375 [195] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG374 [194] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG376 [196] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx + //SEG375 [195] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx - //SEG377 [197] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG376 [196] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$c8 bne b2 - //SEG378 bitmap_clear::@3 - //SEG379 [198] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG377 bitmap_clear::@3 + //SEG378 [197] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG380 [199] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG379 [198] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$28 bne b1 - //SEG381 bitmap_clear::@return - //SEG382 [200] return + //SEG380 bitmap_clear::@return + //SEG381 [199] return rts } -//SEG383 bitmap_init +//SEG382 bitmap_init // Initialize bitmap plotting tables bitmap_init: { .label _3 = $16 .label yoffs = 2 - //SEG384 [202] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] - //SEG385 [202] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 + //SEG383 [201] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG384 [201] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG386 [202] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 + //SEG385 [201] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 lda #$80 - //SEG387 [202] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] - //SEG388 [202] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG389 [202] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy - //SEG390 bitmap_init::@1 + //SEG386 [201] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG387 [201] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG388 [201] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG389 bitmap_init::@1 b1: - //SEG391 [203] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG390 [202] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_bit,x - //SEG392 [204] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 + //SEG391 [203] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 lsr - //SEG393 [205] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuaa_neq_0_then_la1 + //SEG392 [204] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuaa_neq_0_then_la1 cmp #0 bne b2 - //SEG394 [206] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] - //SEG395 [206] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 + //SEG393 [205] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG394 [205] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 lda #$80 - //SEG396 bitmap_init::@2 + //SEG395 bitmap_init::@2 b2: - //SEG397 [207] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + //SEG396 [206] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - //SEG398 [208] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 + //SEG397 [207] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1 - //SEG399 [209] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] - //SEG400 [209] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + //SEG398 [208] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG399 [208] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #BITMAP sta yoffs+1 - //SEG401 [209] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 + //SEG400 [208] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 ldx #0 - //SEG402 [209] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] - //SEG403 [209] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG404 [209] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy - //SEG405 bitmap_init::@3 + //SEG401 [208] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG402 [208] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG403 [208] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG404 bitmap_init::@3 b3: - //SEG406 [210] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG405 [209] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 txa and #7 sta _3 - //SEG407 [211] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG406 [210] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG408 [212] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa + //SEG407 [211] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa ora _3 - //SEG409 [213] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG408 [212] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_ylo,x - //SEG410 [214] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG409 [213] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG411 [215] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG410 [214] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_yhi,x - //SEG412 [216] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG411 [215] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG413 [217] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG412 [216] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #7 bne b4 - //SEG414 bitmap_init::@7 - //SEG415 [218] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG413 bitmap_init::@7 + //SEG414 [217] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -9423,57 +9390,57 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG416 [219] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] - //SEG417 [219] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy - //SEG418 bitmap_init::@4 + //SEG415 [218] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + //SEG416 [218] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy + //SEG417 bitmap_init::@4 b4: - //SEG419 [220] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + //SEG418 [219] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - //SEG420 [221] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 + //SEG419 [220] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne b3 - //SEG421 bitmap_init::@return - //SEG422 [222] return + //SEG420 bitmap_init::@return + //SEG421 [221] return rts - //SEG423 [223] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] - //SEG424 bitmap_init::@10 - //SEG425 [206] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] - //SEG426 [206] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG422 [222] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG423 bitmap_init::@10 + //SEG424 [205] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG425 [205] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy } -//SEG427 fill +//SEG426 fill // Fill some memory with a value fill: { .const size = $3e8 .label end = SCREEN+size .label addr = 2 - //SEG428 [225] phi from fill to fill::@1 [phi:fill->fill::@1] - //SEG429 [225] phi (byte*) fill::addr#2 = (const byte*) SCREEN#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 + //SEG427 [224] phi from fill to fill::@1 [phi:fill->fill::@1] + //SEG428 [224] phi (byte*) fill::addr#2 = (const byte*) SCREEN#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta addr+1 - //SEG430 [225] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] - //SEG431 [225] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy - //SEG432 fill::@1 + //SEG429 [224] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] + //SEG430 [224] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy + //SEG431 fill::@1 b1: - //SEG433 [226] *((byte*) fill::addr#2) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 + //SEG432 [225] *((byte*) fill::addr#2) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 lda #WHITE ldy #0 sta (addr),y - //SEG434 [227] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG433 [226] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG435 [228] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG434 [227] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 lda addr+1 cmp #>end bne b1 lda addr cmp #((word))(const byte*) SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) (word~) mul16s::$16 $16 zp ZP_WORD:6 4.0 -(word~) mul16s::$5 $5 zp ZP_WORD:2 20.0 (word~) mul16s::$6 $6 zp ZP_WORD:6 4.0 (label) mul16s::@1 (label) mul16s::@2 @@ -477,7 +476,7 @@ (signed word) wrap_y::y#6 y zp ZP_WORD:6 203.0 (signed word) wrap_y::y#9 y zp ZP_WORD:6 24.0 -zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 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 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 fill::addr#2 fill::addr#1 mul16s::$5 ] +zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 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 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 fill::addr#2 fill::addr#1 ] zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp ZP_WORD:6 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 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 bitmap_plot::$3 bitmap_plot::plotter#1 sin16s_gen2::$6 sin16s_gen2::$8 mul16s::$6 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 ] diff --git a/src/test/ref/sinusgenscale8.cfg b/src/test/ref/sinusgenscale8.cfg index c94ee4670..44547f80f 100644 --- a/src/test/ref/sinusgenscale8.cfg +++ b/src/test/ref/sinusgenscale8.cfg @@ -246,194 +246,193 @@ mul8su::@4: scope:[mul8su] from mul8su [121] if((signed byte) mul8su::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8su::@1 to:mul8su::@2 mul8su::@2: scope:[mul8su] from mul8su::@4 - [122] (byte~) mul8su::$5 ← > (word) mul8su::m#0 - [123] (byte~) mul8su::$6 ← > (word) mul8su::m#0 - [124] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 - [125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 + [122] (byte~) mul8su::$6 ← > (word) mul8su::m#0 + [123] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 + [124] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 to:mul8su::@1 mul8su::@1: scope:[mul8su] from mul8su::@2 mul8su::@4 - [126] (word) mul8su::m#2 ← phi( mul8su::@2/(word) mul8su::m#1 mul8su::@4/(word) mul8su::m#0 ) + [125] (word) mul8su::m#2 ← phi( mul8su::@2/(word) mul8su::m#1 mul8su::@4/(word) mul8su::m#0 ) to:mul8su::@return mul8su::@return: scope:[mul8su] from mul8su::@1 - [127] return + [126] return to:@return mul8u: scope:[mul8u] from mul8su mulu8_sel - [128] (byte) mul8u::a#6 ← phi( mul8su/(byte~) mul8u::a#8 mulu8_sel/(byte) mul8u::a#2 ) - [128] (byte) mul8u::b#2 ← phi( mul8su/((byte))(const byte) mul8su::b#0 mulu8_sel/(byte) mul8u::b#1 ) - [129] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 + [127] (byte) mul8u::a#6 ← phi( mul8su/(byte~) mul8u::a#8 mulu8_sel/(byte) mul8u::a#2 ) + [127] (byte) mul8u::b#2 ← phi( mul8su/((byte))(const byte) mul8su::b#0 mulu8_sel/(byte) mul8u::b#1 ) + [128] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 to:mul8u::@1 mul8u::@1: scope:[mul8u] from mul8u mul8u::@4 - [130] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 ) - [130] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 ) - [130] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 ) - [131] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 + [129] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 ) + [129] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 ) + [129] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 ) + [130] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 to:mul8u::@return mul8u::@return: scope:[mul8u] from mul8u::@1 - [132] return + [131] return to:@return mul8u::@2: scope:[mul8u] from mul8u::@1 - [133] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [134] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 + [132] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [133] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 to:mul8u::@7 mul8u::@7: scope:[mul8u] from mul8u::@2 - [135] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 + [134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 to:mul8u::@4 mul8u::@4: scope:[mul8u] from mul8u::@2 mul8u::@7 - [136] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 ) - [137] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [138] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [135] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 ) + [136] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [137] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:mul8u::@1 sin8s: scope:[sin8s] from sin8u_table::@1 - [139] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 + [138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 to:sin8s::@5 sin8s::@5: scope:[sin8s] from sin8s - [140] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 + [139] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 to:sin8s::@1 sin8s::@1: scope:[sin8s] from sin8s sin8s::@5 - [141] (byte) sin8s::isUpper#10 ← phi( sin8s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@5/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [141] (word) sin8s::x#4 ← phi( sin8s/(word) sin8s::x#2 sin8s::@5/(word) sin8s::x#0 ) - [142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 + [140] (byte) sin8s::isUpper#10 ← phi( sin8s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@5/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [140] (word) sin8s::x#4 ← phi( sin8s/(word) sin8s::x#2 sin8s::@5/(word) sin8s::x#0 ) + [141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 to:sin8s::@6 sin8s::@6: scope:[sin8s] from sin8s::@1 - [143] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 + [142] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 to:sin8s::@2 sin8s::@2: scope:[sin8s] from sin8s::@1 sin8s::@6 - [144] (word) sin8s::x#6 ← phi( sin8s::@1/(word) sin8s::x#4 sin8s::@6/(word) sin8s::x#1 ) - [145] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 - [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 - [147] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 - [148] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 - [149] call mulu8_sel - [150] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 + [143] (word) sin8s::x#6 ← phi( sin8s::@1/(word) sin8s::x#4 sin8s::@6/(word) sin8s::x#1 ) + [144] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 + [145] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 + [146] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 + [147] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 + [148] call mulu8_sel + [149] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 to:sin8s::@10 sin8s::@10: scope:[sin8s] from sin8s::@2 - [151] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 - [152] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 - [153] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 - [154] call mulu8_sel - [155] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 + [150] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 + [151] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 + [152] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 + [153] call mulu8_sel + [154] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 to:sin8s::@11 sin8s::@11: scope:[sin8s] from sin8s::@10 - [156] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 - [157] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 - [158] call mulu8_sel - [159] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 + [155] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 + [156] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 + [157] call mulu8_sel + [158] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 to:sin8s::@12 sin8s::@12: scope:[sin8s] from sin8s::@11 - [160] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 - [161] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 - [162] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 - [163] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 - [164] call mulu8_sel - [165] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 + [159] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 + [160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 + [161] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 + [162] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 + [163] call mulu8_sel + [164] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 to:sin8s::@13 sin8s::@13: scope:[sin8s] from sin8s::@12 - [166] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 - [167] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 - [168] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 - [169] call mulu8_sel - [170] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 + [165] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 + [166] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 + [167] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 + [168] call mulu8_sel + [169] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 to:sin8s::@14 sin8s::@14: scope:[sin8s] from sin8s::@13 - [171] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 - [172] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [173] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 - [174] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 + [170] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 + [171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 + [173] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 to:sin8s::@7 sin8s::@7: scope:[sin8s] from sin8s::@14 - [175] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 + [174] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 to:sin8s::@3 sin8s::@3: scope:[sin8s] from sin8s::@14 sin8s::@7 - [176] (byte) sin8s::usinx#4 ← phi( sin8s::@14/(byte) sin8s::usinx#1 sin8s::@7/(byte) sin8s::usinx#2 ) - [177] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 + [175] (byte) sin8s::usinx#4 ← phi( sin8s::@14/(byte) sin8s::usinx#1 sin8s::@7/(byte) sin8s::usinx#2 ) + [176] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 to:sin8s::@8 sin8s::@8: scope:[sin8s] from sin8s::@3 - [178] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 + [177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 to:sin8s::@4 sin8s::@4: scope:[sin8s] from sin8s::@18 sin8s::@8 - [179] (signed byte) sin8s::return#0 ← phi( sin8s::@18/(signed byte~) sin8s::return#5 sin8s::@8/(signed byte) sin8s::sinx#1 ) + [178] (signed byte) sin8s::return#0 ← phi( sin8s::@18/(signed byte~) sin8s::return#5 sin8s::@8/(signed byte) sin8s::sinx#1 ) to:sin8s::@return sin8s::@return: scope:[sin8s] from sin8s::@4 - [180] return + [179] return to:@return sin8s::@18: scope:[sin8s] from sin8s::@3 - [181] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 + [180] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 to:sin8s::@4 mulu8_sel: scope:[mulu8_sel] from sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@13 sin8s::@2 - [182] (byte) mulu8_sel::select#5 ← phi( sin8s::@10/(byte/signed byte/word/signed word/dword/signed dword) 1 sin8s::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 sin8s::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@13/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [182] (byte) mulu8_sel::v2#5 ← phi( sin8s::@10/(byte) mulu8_sel::v2#1 sin8s::@11/(const byte) sin8s::DIV_6#0 sin8s::@12/(byte) mulu8_sel::v2#3 sin8s::@13/(byte) mulu8_sel::v2#4 sin8s::@2/(byte) mulu8_sel::v2#0 ) - [182] (byte) mulu8_sel::v1#5 ← phi( sin8s::@10/(byte) mulu8_sel::v1#1 sin8s::@11/(byte) mulu8_sel::v1#2 sin8s::@12/(byte) mulu8_sel::v1#3 sin8s::@13/(byte) mulu8_sel::v1#4 sin8s::@2/(byte) mulu8_sel::v1#0 ) - [183] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 - [184] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 - [185] call mul8u - [186] (word) mul8u::return#3 ← (word) mul8u::res#2 + [181] (byte) mulu8_sel::select#5 ← phi( sin8s::@10/(byte/signed byte/word/signed word/dword/signed dword) 1 sin8s::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 sin8s::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@13/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [181] (byte) mulu8_sel::v2#5 ← phi( sin8s::@10/(byte) mulu8_sel::v2#1 sin8s::@11/(const byte) sin8s::DIV_6#0 sin8s::@12/(byte) mulu8_sel::v2#3 sin8s::@13/(byte) mulu8_sel::v2#4 sin8s::@2/(byte) mulu8_sel::v2#0 ) + [181] (byte) mulu8_sel::v1#5 ← phi( sin8s::@10/(byte) mulu8_sel::v1#1 sin8s::@11/(byte) mulu8_sel::v1#2 sin8s::@12/(byte) mulu8_sel::v1#3 sin8s::@13/(byte) mulu8_sel::v1#4 sin8s::@2/(byte) mulu8_sel::v1#0 ) + [182] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 + [183] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 + [184] call mul8u + [185] (word) mul8u::return#3 ← (word) mul8u::res#2 to:mulu8_sel::@2 mulu8_sel::@2: scope:[mulu8_sel] from mulu8_sel - [187] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 - [188] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 - [189] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 + [186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 + [187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 + [188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 to:mulu8_sel::@return mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel::@2 - [190] return + [189] return to:@return div16u: scope:[div16u] from sin8u_table - [191] phi() - [192] call divr16u - [193] (word) divr16u::return#2 ← (word) divr16u::return#0 + [190] phi() + [191] call divr16u + [192] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div16u::@2 div16u::@2: scope:[div16u] from div16u - [194] (word) div16u::return#0 ← (word) divr16u::return#2 + [193] (word) div16u::return#0 ← (word) divr16u::return#2 to:div16u::@return div16u::@return: scope:[div16u] from div16u::@2 - [195] return + [194] return to:@return divr16u: scope:[divr16u] from div16u - [196] phi() + [195] phi() to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [197] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) - [197] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) - [197] (word) divr16u::dividend#2 ← phi( divr16u/(const word) PI2_u4f12#0 divr16u::@3/(word) divr16u::dividend#0 ) - [197] (word) divr16u::rem#4 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::rem#10 ) - [198] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 - [200] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 - [201] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 + [196] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) + [196] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) + [196] (word) divr16u::dividend#2 ← phi( divr16u/(const word) PI2_u4f12#0 divr16u::@3/(word) divr16u::dividend#0 ) + [196] (word) divr16u::rem#4 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::rem#10 ) + [197] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 + [199] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 + [200] 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 - [202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 + [201] (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 - [203] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [204] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [205] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [206] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 + [202] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [203] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [204] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [207] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [208] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 + [206] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [207] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [209] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [209] (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) - [210] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [211] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 + [208] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [208] (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) + [209] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [210] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [212] (word) rem16u#1 ← (word) divr16u::rem#10 + [211] (word) rem16u#1 ← (word) divr16u::rem#10 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [213] return + [212] return to:@return print_cls: scope:[print_cls] from main - [214] phi() + [213] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [215] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [216] *((byte*) print_cls::sc#2) ← (byte) ' ' - [217] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [218] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 + [214] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [215] *((byte*) print_cls::sc#2) ← (byte) ' ' + [216] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [217] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [219] return + [218] return to:@return diff --git a/src/test/ref/sinusgenscale8.log b/src/test/ref/sinusgenscale8.log index 02ca0e47e..a7a7e18ea 100644 --- a/src/test/ref/sinusgenscale8.log +++ b/src/test/ref/sinusgenscale8.log @@ -190,7 +190,6 @@ mul8su::@1: scope:[mul8su] from mul8su::@2 mul8su::@4 mul8su::@2: scope:[mul8su] from mul8su::@4 (byte) mul8su::b#2 ← phi( mul8su::@4/(byte) mul8su::b#3 ) (word) mul8su::m#3 ← phi( mul8su::@4/(word) mul8su::m#0 ) - (byte~) mul8su::$5 ← > (word) mul8su::m#3 (byte~) mul8su::$6 ← > (word) mul8su::m#3 (byte~) mul8su::$7 ← ((byte)) (byte) mul8su::b#2 (byte~) mul8su::$8 ← (byte~) mul8su::$6 - (byte~) mul8su::$7 @@ -1186,7 +1185,6 @@ SYMBOL TABLE SSA (word~) mul8su::$2 (bool~) mul8su::$3 (bool~) mul8su::$4 -(byte~) mul8su::$5 (byte~) mul8su::$6 (byte~) mul8su::$7 (byte~) mul8su::$8 @@ -2005,11 +2003,11 @@ Inversing boolean not [11] (bool~) divr16u::$4 ← (byte~) divr16u::$2 == (byte/ Inversing boolean not [19] (bool~) divr16u::$9 ← (word) divr16u::rem#5 < (word) divr16u::divisor#1 from [18] (bool~) divr16u::$8 ← (word) divr16u::rem#5 >= (word) divr16u::divisor#1 Inversing boolean not [66] (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [65] (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not [92] (bool~) mul8su::$4 ← (signed byte) mul8su::a#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [91] (bool~) mul8su::$3 ← (signed byte) mul8su::a#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [117] (bool~) sin8s::$1 ← (word) sin8s::x#3 < (word) PI_u4f12#0 from [116] (bool~) sin8s::$0 ← (word) sin8s::x#3 >= (word) PI_u4f12#0 -Inversing boolean not [121] (bool~) sin8s::$4 ← (word) sin8s::x#4 < (word) PI_HALF_u4f12#0 from [120] (bool~) sin8s::$3 ← (word) sin8s::x#4 >= (word) PI_HALF_u4f12#0 -Inversing boolean not [179] (bool~) sin8s::$17 ← (byte) sin8s::usinx#1 < (byte/word/signed word/dword/signed dword) 128 from [178] (bool~) sin8s::$16 ← (byte) sin8s::usinx#1 >= (byte/word/signed word/dword/signed dword) 128 -Inversing boolean not [188] (bool~) sin8s::$20 ← (byte) sin8s::isUpper#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [187] (bool~) sin8s::$19 ← (byte) sin8s::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [243] (bool~) print_sword::$1 ← (signed word) print_sword::w#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [242] (bool~) print_sword::$0 ← (signed word) print_sword::w#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [116] (bool~) sin8s::$1 ← (word) sin8s::x#3 < (word) PI_u4f12#0 from [115] (bool~) sin8s::$0 ← (word) sin8s::x#3 >= (word) PI_u4f12#0 +Inversing boolean not [120] (bool~) sin8s::$4 ← (word) sin8s::x#4 < (word) PI_HALF_u4f12#0 from [119] (bool~) sin8s::$3 ← (word) sin8s::x#4 >= (word) PI_HALF_u4f12#0 +Inversing boolean not [178] (bool~) sin8s::$17 ← (byte) sin8s::usinx#1 < (byte/word/signed word/dword/signed dword) 128 from [177] (bool~) sin8s::$16 ← (byte) sin8s::usinx#1 >= (byte/word/signed word/dword/signed dword) 128 +Inversing boolean not [187] (bool~) sin8s::$20 ← (byte) sin8s::isUpper#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [186] (bool~) sin8s::$19 ← (byte) sin8s::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [242] (bool~) print_sword::$1 ← (signed word) print_sword::w#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [241] (bool~) print_sword::$0 ← (signed word) print_sword::w#2 < (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#6 Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#7 @@ -2265,16 +2263,16 @@ Simple Condition (bool~) divr16u::$11 [27] if((byte) divr16u::i#1!=rangelast(0,1 Simple Condition (bool~) mul8u::$0 [62] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 Simple Condition (bool~) mul8u::$3 [67] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 Simple Condition (bool~) mul8su::$4 [93] if((signed byte) mul8su::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8su::@1 -Simple Condition (bool~) sin8s::$1 [118] if((word) sin8s::x#2<(word) PI_u4f12#0) goto sin8s::@1 -Simple Condition (bool~) sin8s::$4 [122] if((word) sin8s::x#4<(word) PI_HALF_u4f12#0) goto sin8s::@2 -Simple Condition (bool~) sin8s::$17 [180] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 -Simple Condition (bool~) sin8s::$20 [189] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@4 -Simple Condition (bool~) print_str::$0 [221] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 -Simple Condition (bool~) print_ln::$1 [234] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 -Simple Condition (bool~) print_sword::$1 [244] 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_sbyte::$0 [263] if((signed byte) print_sbyte::b#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 -Simple Condition (bool~) print_cls::$1 [328] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 -Simple Condition (bool~) sin8u_table::$33 [481] if((word) sin8u_table::i#1<(word) sin8u_table::tabsize#0) goto sin8u_table::@1 +Simple Condition (bool~) sin8s::$1 [117] if((word) sin8s::x#2<(word) PI_u4f12#0) goto sin8s::@1 +Simple Condition (bool~) sin8s::$4 [121] if((word) sin8s::x#4<(word) PI_HALF_u4f12#0) goto sin8s::@2 +Simple Condition (bool~) sin8s::$17 [179] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 +Simple Condition (bool~) sin8s::$20 [188] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@4 +Simple Condition (bool~) print_str::$0 [220] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 +Simple Condition (bool~) print_ln::$1 [233] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1 +Simple Condition (bool~) print_sword::$1 [243] 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_sbyte::$0 [262] if((signed byte) print_sbyte::b#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1 +Simple Condition (bool~) print_cls::$1 [327] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 +Simple Condition (bool~) sin8u_table::$33 [480] if((word) sin8u_table::i#1<(word) sin8u_table::tabsize#0) goto sin8u_table::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte) rem8u#0 = 0 Constant (const word) rem16u#0 = 0 @@ -2489,9 +2487,9 @@ Calls in [print_sword] to print_char:114 print_word:121 Calls in [print_word] to print_byte:129 print_byte:133 Calls in [print_sbyte] to print_char:137 print_byte:142 print_char:145 Calls in [mul8su] to mul8u:149 -Calls in [sin8s] to mulu8_sel:193 mulu8_sel:200 mulu8_sel:205 mulu8_sel:213 mulu8_sel:220 -Calls in [mulu8_sel] to mul8u:243 -Calls in [div16u] to divr16u:250 +Calls in [sin8s] to mulu8_sel:192 mulu8_sel:199 mulu8_sel:204 mulu8_sel:212 mulu8_sel:219 +Calls in [mulu8_sel] to mul8u:242 +Calls in [div16u] to divr16u:249 Created 41 initial phi equivalence classes Coalesced [15] print_word::w#7 ← print_word::w#1 @@ -2541,44 +2539,44 @@ Coalesced [138] print_sbyte::b#9 ← print_sbyte::b#1 Coalesced (already) [141] print_char_cursor#112 ← print_char_cursor#18 Coalesced (already) [144] print_char_cursor#122 ← print_char_cursor#2 Coalesced [147] print_sbyte::b#8 ← print_sbyte::b#0 -Coalesced [157] mul8su::m#4 ← mul8su::m#1 -Coalesced [160] mul8su::m#5 ← mul8su::m#0 -Coalesced [163] mul8u::a#10 ← mul8u::a#6 -Coalesced [164] mul8u::mb#6 ← mul8u::mb#0 -Coalesced [171] mul8u::res#9 ← mul8u::res#1 -Coalesced [175] mul8u::a#11 ← mul8u::a#0 -Coalesced [176] mul8u::res#7 ← mul8u::res#6 -Coalesced [177] mul8u::mb#7 ← mul8u::mb#1 -Coalesced (already) [178] mul8u::res#8 ← mul8u::res#2 -Coalesced [181] sin8s::x#9 ← sin8s::x#0 -Coalesced [185] sin8s::x#11 ← sin8s::x#1 -Coalesced [191] mulu8_sel::v1#10 ← mulu8_sel::v1#0 -Coalesced [192] mulu8_sel::v2#9 ← mulu8_sel::v2#0 -Coalesced [198] mulu8_sel::v1#6 ← mulu8_sel::v1#1 -Coalesced [199] mulu8_sel::v2#6 ← mulu8_sel::v2#1 -Coalesced [204] mulu8_sel::v1#7 ← mulu8_sel::v1#2 -Coalesced [211] mulu8_sel::v1#8 ← mulu8_sel::v1#3 -Coalesced [212] mulu8_sel::v2#7 ← mulu8_sel::v2#3 -Coalesced [218] mulu8_sel::v1#9 ← mulu8_sel::v1#4 -Coalesced [219] mulu8_sel::v2#8 ← mulu8_sel::v2#4 -Coalesced [227] sin8s::usinx#9 ← sin8s::usinx#2 -Coalesced [231] sin8s::return#6 ← sin8s::sinx#1 -Coalesced [235] sin8s::usinx#8 ← sin8s::usinx#1 -Coalesced [236] sin8s::x#10 ← sin8s::x#4 -Coalesced [237] sin8s::x#8 ← sin8s::x#2 -Coalesced [241] mul8u::b#3 ← mul8u::b#1 -Coalesced [242] mul8u::a#9 ← mul8u::a#2 -Coalesced [261] divr16u::rem#13 ← divr16u::rem#1 -Coalesced [268] divr16u::rem#15 ← divr16u::rem#2 -Coalesced [269] divr16u::return#6 ← divr16u::quotient#2 -Coalesced [275] divr16u::rem#11 ← divr16u::rem#10 -Coalesced [276] divr16u::dividend#8 ← divr16u::dividend#0 -Coalesced [277] divr16u::quotient#9 ← divr16u::return#0 -Coalesced [278] divr16u::i#7 ← divr16u::i#1 -Coalesced [279] divr16u::rem#14 ← divr16u::rem#5 -Coalesced [280] divr16u::return#5 ← divr16u::quotient#1 -Coalesced [281] divr16u::rem#12 ← divr16u::rem#0 -Coalesced [288] print_cls::sc#3 ← print_cls::sc#1 +Coalesced [156] mul8su::m#4 ← mul8su::m#1 +Coalesced [159] mul8su::m#5 ← mul8su::m#0 +Coalesced [162] mul8u::a#10 ← mul8u::a#6 +Coalesced [163] mul8u::mb#6 ← mul8u::mb#0 +Coalesced [170] mul8u::res#9 ← mul8u::res#1 +Coalesced [174] mul8u::a#11 ← mul8u::a#0 +Coalesced [175] mul8u::res#7 ← mul8u::res#6 +Coalesced [176] mul8u::mb#7 ← mul8u::mb#1 +Coalesced (already) [177] mul8u::res#8 ← mul8u::res#2 +Coalesced [180] sin8s::x#9 ← sin8s::x#0 +Coalesced [184] sin8s::x#11 ← sin8s::x#1 +Coalesced [190] mulu8_sel::v1#10 ← mulu8_sel::v1#0 +Coalesced [191] mulu8_sel::v2#9 ← mulu8_sel::v2#0 +Coalesced [197] mulu8_sel::v1#6 ← mulu8_sel::v1#1 +Coalesced [198] mulu8_sel::v2#6 ← mulu8_sel::v2#1 +Coalesced [203] mulu8_sel::v1#7 ← mulu8_sel::v1#2 +Coalesced [210] mulu8_sel::v1#8 ← mulu8_sel::v1#3 +Coalesced [211] mulu8_sel::v2#7 ← mulu8_sel::v2#3 +Coalesced [217] mulu8_sel::v1#9 ← mulu8_sel::v1#4 +Coalesced [218] mulu8_sel::v2#8 ← mulu8_sel::v2#4 +Coalesced [226] sin8s::usinx#9 ← sin8s::usinx#2 +Coalesced [230] sin8s::return#6 ← sin8s::sinx#1 +Coalesced [234] sin8s::usinx#8 ← sin8s::usinx#1 +Coalesced [235] sin8s::x#10 ← sin8s::x#4 +Coalesced [236] sin8s::x#8 ← sin8s::x#2 +Coalesced [240] mul8u::b#3 ← mul8u::b#1 +Coalesced [241] mul8u::a#9 ← mul8u::a#2 +Coalesced [260] divr16u::rem#13 ← divr16u::rem#1 +Coalesced [267] divr16u::rem#15 ← divr16u::rem#2 +Coalesced [268] divr16u::return#6 ← divr16u::quotient#2 +Coalesced [274] divr16u::rem#11 ← divr16u::rem#10 +Coalesced [275] divr16u::dividend#8 ← divr16u::dividend#0 +Coalesced [276] divr16u::quotient#9 ← divr16u::return#0 +Coalesced [277] divr16u::i#7 ← divr16u::i#1 +Coalesced [278] divr16u::rem#14 ← divr16u::rem#5 +Coalesced [279] divr16u::return#5 ← divr16u::quotient#1 +Coalesced [280] divr16u::rem#12 ← divr16u::rem#0 +Coalesced [287] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 28 phi equivalence classes Culled Empty Block (label) sin8u_table::@26 Culled Empty Block (label) print_ln::@3 @@ -2867,196 +2865,195 @@ mul8su::@4: scope:[mul8su] from mul8su [121] if((signed byte) mul8su::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8su::@1 to:mul8su::@2 mul8su::@2: scope:[mul8su] from mul8su::@4 - [122] (byte~) mul8su::$5 ← > (word) mul8su::m#0 - [123] (byte~) mul8su::$6 ← > (word) mul8su::m#0 - [124] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 - [125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 + [122] (byte~) mul8su::$6 ← > (word) mul8su::m#0 + [123] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 + [124] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 to:mul8su::@1 mul8su::@1: scope:[mul8su] from mul8su::@2 mul8su::@4 - [126] (word) mul8su::m#2 ← phi( mul8su::@2/(word) mul8su::m#1 mul8su::@4/(word) mul8su::m#0 ) + [125] (word) mul8su::m#2 ← phi( mul8su::@2/(word) mul8su::m#1 mul8su::@4/(word) mul8su::m#0 ) to:mul8su::@return mul8su::@return: scope:[mul8su] from mul8su::@1 - [127] return + [126] return to:@return mul8u: scope:[mul8u] from mul8su mulu8_sel - [128] (byte) mul8u::a#6 ← phi( mul8su/(byte~) mul8u::a#8 mulu8_sel/(byte) mul8u::a#2 ) - [128] (byte) mul8u::b#2 ← phi( mul8su/((byte))(const byte) mul8su::b#0 mulu8_sel/(byte) mul8u::b#1 ) - [129] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 + [127] (byte) mul8u::a#6 ← phi( mul8su/(byte~) mul8u::a#8 mulu8_sel/(byte) mul8u::a#2 ) + [127] (byte) mul8u::b#2 ← phi( mul8su/((byte))(const byte) mul8su::b#0 mulu8_sel/(byte) mul8u::b#1 ) + [128] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 to:mul8u::@1 mul8u::@1: scope:[mul8u] from mul8u mul8u::@4 - [130] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 ) - [130] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 ) - [130] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 ) - [131] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 + [129] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 ) + [129] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 ) + [129] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 ) + [130] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 to:mul8u::@return mul8u::@return: scope:[mul8u] from mul8u::@1 - [132] return + [131] return to:@return mul8u::@2: scope:[mul8u] from mul8u::@1 - [133] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [134] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 + [132] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [133] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 to:mul8u::@7 mul8u::@7: scope:[mul8u] from mul8u::@2 - [135] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 + [134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 to:mul8u::@4 mul8u::@4: scope:[mul8u] from mul8u::@2 mul8u::@7 - [136] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 ) - [137] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [138] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [135] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 ) + [136] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [137] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:mul8u::@1 sin8s: scope:[sin8s] from sin8u_table::@1 - [139] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 + [138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 to:sin8s::@5 sin8s::@5: scope:[sin8s] from sin8s - [140] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 + [139] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 to:sin8s::@1 sin8s::@1: scope:[sin8s] from sin8s sin8s::@5 - [141] (byte) sin8s::isUpper#10 ← phi( sin8s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@5/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [141] (word) sin8s::x#4 ← phi( sin8s/(word) sin8s::x#2 sin8s::@5/(word) sin8s::x#0 ) - [142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 + [140] (byte) sin8s::isUpper#10 ← phi( sin8s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@5/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [140] (word) sin8s::x#4 ← phi( sin8s/(word) sin8s::x#2 sin8s::@5/(word) sin8s::x#0 ) + [141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 to:sin8s::@6 sin8s::@6: scope:[sin8s] from sin8s::@1 - [143] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 + [142] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 to:sin8s::@2 sin8s::@2: scope:[sin8s] from sin8s::@1 sin8s::@6 - [144] (word) sin8s::x#6 ← phi( sin8s::@1/(word) sin8s::x#4 sin8s::@6/(word) sin8s::x#1 ) - [145] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 - [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 - [147] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 - [148] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 - [149] call mulu8_sel - [150] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 + [143] (word) sin8s::x#6 ← phi( sin8s::@1/(word) sin8s::x#4 sin8s::@6/(word) sin8s::x#1 ) + [144] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 + [145] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 + [146] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 + [147] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 + [148] call mulu8_sel + [149] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 to:sin8s::@10 sin8s::@10: scope:[sin8s] from sin8s::@2 - [151] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 - [152] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 - [153] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 - [154] call mulu8_sel - [155] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 + [150] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 + [151] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 + [152] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 + [153] call mulu8_sel + [154] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 to:sin8s::@11 sin8s::@11: scope:[sin8s] from sin8s::@10 - [156] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 - [157] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 - [158] call mulu8_sel - [159] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 + [155] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 + [156] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 + [157] call mulu8_sel + [158] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 to:sin8s::@12 sin8s::@12: scope:[sin8s] from sin8s::@11 - [160] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 - [161] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 - [162] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 - [163] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 - [164] call mulu8_sel - [165] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 + [159] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 + [160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 + [161] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 + [162] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 + [163] call mulu8_sel + [164] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 to:sin8s::@13 sin8s::@13: scope:[sin8s] from sin8s::@12 - [166] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 - [167] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 - [168] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 - [169] call mulu8_sel - [170] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 + [165] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 + [166] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 + [167] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 + [168] call mulu8_sel + [169] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 to:sin8s::@14 sin8s::@14: scope:[sin8s] from sin8s::@13 - [171] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 - [172] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [173] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 - [174] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 + [170] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 + [171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 + [173] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 to:sin8s::@7 sin8s::@7: scope:[sin8s] from sin8s::@14 - [175] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 + [174] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 to:sin8s::@3 sin8s::@3: scope:[sin8s] from sin8s::@14 sin8s::@7 - [176] (byte) sin8s::usinx#4 ← phi( sin8s::@14/(byte) sin8s::usinx#1 sin8s::@7/(byte) sin8s::usinx#2 ) - [177] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 + [175] (byte) sin8s::usinx#4 ← phi( sin8s::@14/(byte) sin8s::usinx#1 sin8s::@7/(byte) sin8s::usinx#2 ) + [176] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 to:sin8s::@8 sin8s::@8: scope:[sin8s] from sin8s::@3 - [178] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 + [177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 to:sin8s::@4 sin8s::@4: scope:[sin8s] from sin8s::@18 sin8s::@8 - [179] (signed byte) sin8s::return#0 ← phi( sin8s::@18/(signed byte~) sin8s::return#5 sin8s::@8/(signed byte) sin8s::sinx#1 ) + [178] (signed byte) sin8s::return#0 ← phi( sin8s::@18/(signed byte~) sin8s::return#5 sin8s::@8/(signed byte) sin8s::sinx#1 ) to:sin8s::@return sin8s::@return: scope:[sin8s] from sin8s::@4 - [180] return + [179] return to:@return sin8s::@18: scope:[sin8s] from sin8s::@3 - [181] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 + [180] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 to:sin8s::@4 mulu8_sel: scope:[mulu8_sel] from sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@13 sin8s::@2 - [182] (byte) mulu8_sel::select#5 ← phi( sin8s::@10/(byte/signed byte/word/signed word/dword/signed dword) 1 sin8s::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 sin8s::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@13/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [182] (byte) mulu8_sel::v2#5 ← phi( sin8s::@10/(byte) mulu8_sel::v2#1 sin8s::@11/(const byte) sin8s::DIV_6#0 sin8s::@12/(byte) mulu8_sel::v2#3 sin8s::@13/(byte) mulu8_sel::v2#4 sin8s::@2/(byte) mulu8_sel::v2#0 ) - [182] (byte) mulu8_sel::v1#5 ← phi( sin8s::@10/(byte) mulu8_sel::v1#1 sin8s::@11/(byte) mulu8_sel::v1#2 sin8s::@12/(byte) mulu8_sel::v1#3 sin8s::@13/(byte) mulu8_sel::v1#4 sin8s::@2/(byte) mulu8_sel::v1#0 ) - [183] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 - [184] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 - [185] call mul8u - [186] (word) mul8u::return#3 ← (word) mul8u::res#2 + [181] (byte) mulu8_sel::select#5 ← phi( sin8s::@10/(byte/signed byte/word/signed word/dword/signed dword) 1 sin8s::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 sin8s::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@13/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [181] (byte) mulu8_sel::v2#5 ← phi( sin8s::@10/(byte) mulu8_sel::v2#1 sin8s::@11/(const byte) sin8s::DIV_6#0 sin8s::@12/(byte) mulu8_sel::v2#3 sin8s::@13/(byte) mulu8_sel::v2#4 sin8s::@2/(byte) mulu8_sel::v2#0 ) + [181] (byte) mulu8_sel::v1#5 ← phi( sin8s::@10/(byte) mulu8_sel::v1#1 sin8s::@11/(byte) mulu8_sel::v1#2 sin8s::@12/(byte) mulu8_sel::v1#3 sin8s::@13/(byte) mulu8_sel::v1#4 sin8s::@2/(byte) mulu8_sel::v1#0 ) + [182] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 + [183] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 + [184] call mul8u + [185] (word) mul8u::return#3 ← (word) mul8u::res#2 to:mulu8_sel::@2 mulu8_sel::@2: scope:[mulu8_sel] from mulu8_sel - [187] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 - [188] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 - [189] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 + [186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 + [187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 + [188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 to:mulu8_sel::@return mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel::@2 - [190] return + [189] return to:@return div16u: scope:[div16u] from sin8u_table - [191] phi() - [192] call divr16u - [193] (word) divr16u::return#2 ← (word) divr16u::return#0 + [190] phi() + [191] call divr16u + [192] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div16u::@2 div16u::@2: scope:[div16u] from div16u - [194] (word) div16u::return#0 ← (word) divr16u::return#2 + [193] (word) div16u::return#0 ← (word) divr16u::return#2 to:div16u::@return div16u::@return: scope:[div16u] from div16u::@2 - [195] return + [194] return to:@return divr16u: scope:[divr16u] from div16u - [196] phi() + [195] phi() to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [197] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) - [197] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) - [197] (word) divr16u::dividend#2 ← phi( divr16u/(const word) PI2_u4f12#0 divr16u::@3/(word) divr16u::dividend#0 ) - [197] (word) divr16u::rem#4 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::rem#10 ) - [198] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 - [200] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 - [201] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 + [196] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) + [196] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) + [196] (word) divr16u::dividend#2 ← phi( divr16u/(const word) PI2_u4f12#0 divr16u::@3/(word) divr16u::dividend#0 ) + [196] (word) divr16u::rem#4 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::rem#10 ) + [197] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 + [199] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 + [200] 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 - [202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 + [201] (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 - [203] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [204] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [205] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [206] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 + [202] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [203] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [204] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [207] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [208] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 + [206] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [207] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [209] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [209] (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) - [210] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [211] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 + [208] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [208] (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) + [209] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [210] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [212] (word) rem16u#1 ← (word) divr16u::rem#10 + [211] (word) rem16u#1 ← (word) divr16u::rem#10 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [213] return + [212] return to:@return print_cls: scope:[print_cls] from main - [214] phi() + [213] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [215] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [216] *((byte*) print_cls::sc#2) ← (byte) ' ' - [217] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [218] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 + [214] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [215] *((byte*) print_cls::sc#2) ← (byte) ' ' + [216] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [217] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [219] return + [218] return to:@return @@ -3102,7 +3099,6 @@ VARIABLE REGISTER WEIGHTS (word) main::tabsize (signed word()) mul8su((signed byte) mul8su::a , (byte) mul8su::b) (byte~) mul8su::$10 4.0 -(byte~) mul8su::$5 20.0 (byte~) mul8su::$6 4.0 (signed byte) mul8su::a (signed byte) mul8su::a#0 2.6 @@ -3324,7 +3320,6 @@ Added variable sin8u_table::sinx_tr#0 to zero page equivalence class [ sin8u_tab Added variable print_byte::$0 to zero page equivalence class [ print_byte::$0 ] Added variable print_byte::$2 to zero page equivalence class [ print_byte::$2 ] Added variable mul8u::return#2 to zero page equivalence class [ mul8u::return#2 ] -Added variable mul8su::$5 to zero page equivalence class [ mul8su::$5 ] Added variable mul8su::$6 to zero page equivalence class [ mul8su::$6 ] Added variable mul8su::$10 to zero page equivalence class [ mul8su::$10 ] Added variable mul8u::$1 to zero page equivalence class [ mul8u::$1 ] @@ -3392,7 +3387,6 @@ Complete equivalence classes [ print_byte::$0 ] [ print_byte::$2 ] [ mul8u::return#2 ] -[ mul8su::$5 ] [ mul8su::$6 ] [ mul8su::$10 ] [ mul8u::$1 ] @@ -3459,33 +3453,32 @@ Allocated zp ZP_BYTE:58 [ sin8u_table::sinx_tr#0 ] Allocated zp ZP_BYTE:59 [ print_byte::$0 ] Allocated zp ZP_BYTE:60 [ print_byte::$2 ] Allocated zp ZP_WORD:61 [ mul8u::return#2 ] -Allocated zp ZP_BYTE:63 [ mul8su::$5 ] -Allocated zp ZP_BYTE:64 [ mul8su::$6 ] -Allocated zp ZP_BYTE:65 [ mul8su::$10 ] -Allocated zp ZP_BYTE:66 [ mul8u::$1 ] -Allocated zp ZP_WORD:67 [ sin8s::$6 ] -Allocated zp ZP_BYTE:69 [ sin8s::x1#0 ] -Allocated zp ZP_BYTE:70 [ mulu8_sel::return#0 ] -Allocated zp ZP_BYTE:71 [ sin8s::x2#0 ] -Allocated zp ZP_BYTE:72 [ mulu8_sel::return#1 ] -Allocated zp ZP_BYTE:73 [ sin8s::x3#0 ] -Allocated zp ZP_BYTE:74 [ mulu8_sel::return#2 ] -Allocated zp ZP_BYTE:75 [ sin8s::x3_6#0 ] -Allocated zp ZP_BYTE:76 [ sin8s::usinx#0 ] -Allocated zp ZP_BYTE:77 [ mulu8_sel::return#10 ] -Allocated zp ZP_BYTE:78 [ sin8s::x4#0 ] -Allocated zp ZP_BYTE:79 [ mulu8_sel::return#11 ] -Allocated zp ZP_BYTE:80 [ sin8s::x5#0 ] -Allocated zp ZP_BYTE:81 [ sin8s::x5_128#0 ] -Allocated zp ZP_WORD:82 [ mul8u::return#3 ] -Allocated zp ZP_WORD:84 [ mulu8_sel::$0 ] -Allocated zp ZP_WORD:86 [ mulu8_sel::$1 ] -Allocated zp ZP_BYTE:88 [ mulu8_sel::return#12 ] -Allocated zp ZP_WORD:89 [ divr16u::return#2 ] -Allocated zp ZP_WORD:91 [ div16u::return#0 ] -Allocated zp ZP_BYTE:93 [ divr16u::$1 ] -Allocated zp ZP_BYTE:94 [ divr16u::$2 ] -Allocated zp ZP_WORD:95 [ rem16u#1 ] +Allocated zp ZP_BYTE:63 [ mul8su::$6 ] +Allocated zp ZP_BYTE:64 [ mul8su::$10 ] +Allocated zp ZP_BYTE:65 [ mul8u::$1 ] +Allocated zp ZP_WORD:66 [ sin8s::$6 ] +Allocated zp ZP_BYTE:68 [ sin8s::x1#0 ] +Allocated zp ZP_BYTE:69 [ mulu8_sel::return#0 ] +Allocated zp ZP_BYTE:70 [ sin8s::x2#0 ] +Allocated zp ZP_BYTE:71 [ mulu8_sel::return#1 ] +Allocated zp ZP_BYTE:72 [ sin8s::x3#0 ] +Allocated zp ZP_BYTE:73 [ mulu8_sel::return#2 ] +Allocated zp ZP_BYTE:74 [ sin8s::x3_6#0 ] +Allocated zp ZP_BYTE:75 [ sin8s::usinx#0 ] +Allocated zp ZP_BYTE:76 [ mulu8_sel::return#10 ] +Allocated zp ZP_BYTE:77 [ sin8s::x4#0 ] +Allocated zp ZP_BYTE:78 [ mulu8_sel::return#11 ] +Allocated zp ZP_BYTE:79 [ sin8s::x5#0 ] +Allocated zp ZP_BYTE:80 [ sin8s::x5_128#0 ] +Allocated zp ZP_WORD:81 [ mul8u::return#3 ] +Allocated zp ZP_WORD:83 [ mulu8_sel::$0 ] +Allocated zp ZP_WORD:85 [ mulu8_sel::$1 ] +Allocated zp ZP_BYTE:87 [ mulu8_sel::return#12 ] +Allocated zp ZP_WORD:88 [ divr16u::return#2 ] +Allocated zp ZP_WORD:90 [ div16u::return#0 ] +Allocated zp ZP_BYTE:92 [ divr16u::$1 ] +Allocated zp ZP_BYTE:93 [ divr16u::$2 ] +Allocated zp ZP_WORD:94 [ rem16u#1 ] INITIAL ASM //SEG0 File Comments @@ -3500,7 +3493,7 @@ INITIAL ASM .const PI_u4f12 = $3244 // PI/2 in u[4.12] format .const PI_HALF_u4f12 = $1922 - .label rem16u = $5f + .label rem16u = $5e .label print_char_cursor = $10 .label print_line_cursor = 8 //SEG3 @begin @@ -3523,7 +3516,7 @@ bend: main: { .label tabsize = $14 //SEG11 [5] call print_cls - //SEG12 [214] phi from main to print_cls [phi:main->print_cls] + //SEG12 [213] 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] @@ -3564,7 +3557,7 @@ sin8u_table: { .label x = 2 .label i = 6 //SEG20 [10] call div16u - //SEG21 [191] phi from sin8u_table to div16u [phi:sin8u_table->div16u] + //SEG21 [190] phi from sin8u_table to div16u [phi:sin8u_table->div16u] div16u_from_sin8u_table: jsr div16u //SEG22 [11] (word) div16u::return#2 ← (word) div16u::return#0 -- vwuz1=vwuz2 @@ -4271,9 +4264,8 @@ print_sbyte: { // mul8su(signed byte zeropage($34) a) mul8su: { .const b = sin8u_table.amplitude+1 - .label _5 = $3f - .label _6 = $40 - .label _10 = $41 + .label _6 = $3f + .label _10 = $40 .label m = $15 .label a = $34 .label return = $35 @@ -4281,10 +4273,10 @@ mul8su: { lda a sta mul8u.a //SEG267 [118] call mul8u - //SEG268 [128] phi from mul8su to mul8u [phi:mul8su->mul8u] + //SEG268 [127] phi from mul8su to mul8u [phi:mul8su->mul8u] mul8u_from_mul8su: - //SEG269 [128] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8su->mul8u#0] -- register_copy - //SEG270 [128] phi (byte) mul8u::b#2 = ((byte))(const byte) mul8su::b#0 [phi:mul8su->mul8u#1] -- vbuz1=vbuc1 + //SEG269 [127] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8su->mul8u#0] -- register_copy + //SEG270 [127] phi (byte) mul8u::b#2 = ((byte))(const byte) mul8su::b#0 [phi:mul8su->mul8u#1] -- vbuz1=vbuc1 lda #b sta mul8u.b jsr mul8u @@ -4308,84 +4300,81 @@ mul8su: { jmp b2 //SEG275 mul8su::@2 b2: - //SEG276 [122] (byte~) mul8su::$5 ← > (word) mul8su::m#0 -- vbuz1=_hi_vwuz2 - lda m+1 - sta _5 - //SEG277 [123] (byte~) mul8su::$6 ← > (word) mul8su::m#0 -- vbuz1=_hi_vwuz2 + //SEG276 [122] (byte~) mul8su::$6 ← > (word) mul8su::m#0 -- vbuz1=_hi_vwuz2 lda m+1 sta _6 - //SEG278 [124] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 -- vbuz1=vbuz2_minus_vbuc1 + //SEG277 [123] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 -- vbuz1=vbuz2_minus_vbuc1 lda _6 sec sbc #b sta _10 - //SEG279 [125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG278 [124] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuz2 lda _10 sta m+1 - //SEG280 [126] phi from mul8su::@2 mul8su::@4 to mul8su::@1 [phi:mul8su::@2/mul8su::@4->mul8su::@1] + //SEG279 [125] phi from mul8su::@2 mul8su::@4 to mul8su::@1 [phi:mul8su::@2/mul8su::@4->mul8su::@1] b1_from_b2: b1_from_b4: - //SEG281 [126] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@4->mul8su::@1#0] -- register_copy + //SEG280 [125] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@4->mul8su::@1#0] -- register_copy jmp b1 - //SEG282 mul8su::@1 + //SEG281 mul8su::@1 b1: jmp breturn - //SEG283 mul8su::@return + //SEG282 mul8su::@return breturn: - //SEG284 [127] return + //SEG283 [126] return rts } -//SEG285 mul8u +//SEG284 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word // mul8u(byte zeropage($18) a, byte zeropage($17) b) mul8u: { - .label _1 = $42 + .label _1 = $41 .label mb = $1b .label a = $18 .label res = $19 .label return = $3d .label b = $17 - .label return_3 = $52 - //SEG286 [129] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuz2 + .label return_3 = $51 + //SEG285 [128] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuz2 lda b sta mb lda #0 sta mb+1 - //SEG287 [130] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG286 [129] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG288 [130] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG289 [130] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG287 [129] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG288 [129] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #<0 sta res lda #>0 sta res+1 - //SEG290 [130] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG289 [129] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG291 mul8u::@1 + //SEG290 mul8u::@1 b1: - //SEG292 [131] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 + //SEG291 [130] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 lda a cmp #0 bne b2 jmp breturn - //SEG293 mul8u::@return + //SEG292 mul8u::@return breturn: - //SEG294 [132] return + //SEG293 [131] return rts - //SEG295 mul8u::@2 + //SEG294 mul8u::@2 b2: - //SEG296 [133] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG295 [132] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and a sta _1 - //SEG297 [134] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuz1_eq_0_then_la1 + //SEG296 [133] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b4_from_b2 jmp b7 - //SEG298 mul8u::@7 + //SEG297 mul8u::@7 b7: - //SEG299 [135] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG298 [134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -4393,26 +4382,26 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG300 [136] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG299 [135] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] b4_from_b2: b4_from_b7: - //SEG301 [136] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG300 [135] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy jmp b4 - //SEG302 mul8u::@4 + //SEG301 mul8u::@4 b4: - //SEG303 [137] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG302 [136] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 lsr a - //SEG304 [138] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG303 [137] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG305 [130] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG304 [129] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] b1_from_b4: - //SEG306 [130] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG307 [130] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG308 [130] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG305 [129] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG306 [129] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG307 [129] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG309 sin8s +//SEG308 sin8s // Calculate signed byte sinus sin(x) // x: unsigned word input u[4.12] in the interval $0000 - PI2_u4f12 // result: signed byte sin(x) s[0.7] - using the full range -$7f - $7f @@ -4420,16 +4409,16 @@ mul8u: { sin8s: { // u[2.6] x^3 .const DIV_6 = $2b - .label _6 = $43 + .label _6 = $42 .label x = $1e - .label x1 = $45 - .label x2 = $47 - .label x3 = $49 - .label x3_6 = $4b - .label usinx = $4c - .label x4 = $4e - .label x5 = $50 - .label x5_128 = $51 + .label x1 = $44 + .label x2 = $46 + .label x3 = $48 + .label x3_6 = $4a + .label usinx = $4b + .label x4 = $4d + .label x5 = $4f + .label x5_128 = $50 .label usinx_1 = $20 .label usinx_2 = $20 .label return = $21 @@ -4437,7 +4426,7 @@ sin8s: { .label return_2 = $32 .label usinx_4 = $20 .label isUpper = $1d - //SEG310 [139] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG309 [138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_u4f12 bcc b1_from_sin8s @@ -4447,9 +4436,9 @@ sin8s: { bcc b1_from_sin8s !: jmp b5 - //SEG311 sin8s::@5 + //SEG310 sin8s::@5 b5: - //SEG312 [140] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG311 [139] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 lda x sec sbc #PI_u4f12 sta x+1 - //SEG313 [141] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] + //SEG312 [140] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] b1_from_b5: - //SEG314 [141] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG313 [140] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG315 [141] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy + //SEG314 [140] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy jmp b1 - //SEG316 [141] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] + //SEG315 [140] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] b1_from_sin8s: - //SEG317 [141] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG316 [140] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG318 [141] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy + //SEG317 [140] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy jmp b1 - //SEG319 sin8s::@1 + //SEG318 sin8s::@1 b1: - //SEG320 [142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG319 [141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_HALF_u4f12 bcc b2_from_b1 @@ -4483,9 +4472,9 @@ sin8s: { bcc b2_from_b1 !: jmp b6 - //SEG321 sin8s::@6 + //SEG320 sin8s::@6 b6: - //SEG322 [143] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 -- vwuz1=vwuc1_minus_vwuz1 + //SEG321 [142] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 -- vwuz1=vwuc1_minus_vwuz1 sec lda #PI_u4f12 sbc x+1 sta x+1 - //SEG323 [144] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] + //SEG322 [143] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] b2_from_b1: b2_from_b6: - //SEG324 [144] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy + //SEG323 [143] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy jmp b2 - //SEG325 sin8s::@2 + //SEG324 sin8s::@2 b2: - //SEG326 [145] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 + //SEG325 [144] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 lda x asl sta _6 @@ -4511,235 +4500,235 @@ sin8s: { rol _6+1 asl _6 rol _6+1 - //SEG327 [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 + //SEG326 [145] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 lda _6+1 sta x1 - //SEG328 [147] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG327 [146] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v1 - //SEG329 [148] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG328 [147] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG330 [149] call mulu8_sel - //SEG331 [182] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] + //SEG329 [148] call mulu8_sel + //SEG330 [181] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] mulu8_sel_from_b2: - //SEG332 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG331 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG333 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy - //SEG334 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy + //SEG332 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy + //SEG333 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG335 [150] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG334 [149] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return jmp b10 - //SEG336 sin8s::@10 + //SEG335 sin8s::@10 b10: - //SEG337 [151] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 -- vbuz1=vbuz2 + //SEG336 [150] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 -- vbuz1=vbuz2 lda mulu8_sel.return sta x2 - //SEG338 [152] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuz1=vbuz2 + //SEG337 [151] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuz1=vbuz2 lda x2 sta mulu8_sel.v1 - //SEG339 [153] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG338 [152] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG340 [154] call mulu8_sel - //SEG341 [182] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] + //SEG339 [153] call mulu8_sel + //SEG340 [181] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] mulu8_sel_from_b10: - //SEG342 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG341 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu8_sel.select - //SEG343 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy - //SEG344 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy + //SEG342 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy + //SEG343 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG345 [155] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG344 [154] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return_1 jmp b11 - //SEG346 sin8s::@11 + //SEG345 sin8s::@11 b11: - //SEG347 [156] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuz2 + //SEG346 [155] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuz2 lda mulu8_sel.return_1 sta x3 - //SEG348 [157] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 + //SEG347 [156] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 lda x3 sta mulu8_sel.v1 - //SEG349 [158] call mulu8_sel - //SEG350 [182] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] + //SEG348 [157] call mulu8_sel + //SEG349 [181] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] mulu8_sel_from_b11: - //SEG351 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG350 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu8_sel.select - //SEG352 [182] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuz1=vbuc1 + //SEG351 [181] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuz1=vbuc1 lda #DIV_6 sta mulu8_sel.v2 - //SEG353 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy + //SEG352 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG354 [159] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG353 [158] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return_2 jmp b12 - //SEG355 sin8s::@12 + //SEG354 sin8s::@12 b12: - //SEG356 [160] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 -- vbuz1=vbuz2 + //SEG355 [159] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 -- vbuz1=vbuz2 lda mulu8_sel.return_2 sta x3_6 - //SEG357 [161] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG356 [160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuz3 lda x1 sec sbc x3_6 sta usinx - //SEG358 [162] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 + //SEG357 [161] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 lda x3 sta mulu8_sel.v1 - //SEG359 [163] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG358 [162] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG360 [164] call mulu8_sel - //SEG361 [182] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] + //SEG359 [163] call mulu8_sel + //SEG360 [181] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] mulu8_sel_from_b12: - //SEG362 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG361 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG363 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy - //SEG364 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy + //SEG362 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy + //SEG363 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG365 [165] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG364 [164] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return_10 jmp b13 - //SEG366 sin8s::@13 + //SEG365 sin8s::@13 b13: - //SEG367 [166] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 -- vbuz1=vbuz2 + //SEG366 [165] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 -- vbuz1=vbuz2 lda mulu8_sel.return_10 sta x4 - //SEG368 [167] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuz1=vbuz2 + //SEG367 [166] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuz1=vbuz2 lda x4 sta mulu8_sel.v1 - //SEG369 [168] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG368 [167] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG370 [169] call mulu8_sel - //SEG371 [182] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] + //SEG369 [168] call mulu8_sel + //SEG370 [181] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] mulu8_sel_from_b13: - //SEG372 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@13->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG371 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@13->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG373 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy - //SEG374 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy + //SEG372 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy + //SEG373 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG375 [170] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG374 [169] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return_11 jmp b14 - //SEG376 sin8s::@14 + //SEG375 sin8s::@14 b14: - //SEG377 [171] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 -- vbuz1=vbuz2 + //SEG376 [170] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 -- vbuz1=vbuz2 lda mulu8_sel.return_11 sta x5 - //SEG378 [172] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG377 [171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda x5 lsr lsr lsr lsr sta x5_128 - //SEG379 [173] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuz1=vbuz2_plus_vbuz3 + //SEG378 [172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuz1=vbuz2_plus_vbuz3 lda usinx clc adc x5_128 sta usinx_1 - //SEG380 [174] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 -- vbuz1_lt_vbuc1_then_la1 + //SEG379 [173] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 -- vbuz1_lt_vbuc1_then_la1 lda usinx_1 cmp #$80 bcc b3_from_b14 jmp b7 - //SEG381 sin8s::@7 + //SEG380 sin8s::@7 b7: - //SEG382 [175] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuz1=_dec_vbuz1 + //SEG381 [174] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuz1=_dec_vbuz1 dec usinx_2 - //SEG383 [176] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] + //SEG382 [175] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] b3_from_b14: b3_from_b7: - //SEG384 [176] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy + //SEG383 [175] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy jmp b3 - //SEG385 sin8s::@3 + //SEG384 sin8s::@3 b3: - //SEG386 [177] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 -- vbuz1_eq_0_then_la1 + //SEG385 [176] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b18 jmp b8 - //SEG387 sin8s::@8 + //SEG386 sin8s::@8 b8: - //SEG388 [178] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsz1=_neg_vbsz2 + //SEG387 [177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsz1=_neg_vbsz2 lda usinx_4 eor #$ff clc adc #1 sta sinx - //SEG389 [179] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] + //SEG388 [178] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] b4_from_b18: b4_from_b8: - //SEG390 [179] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy + //SEG389 [178] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy jmp b4 - //SEG391 sin8s::@4 + //SEG390 sin8s::@4 b4: jmp breturn - //SEG392 sin8s::@return + //SEG391 sin8s::@return breturn: - //SEG393 [180] return + //SEG392 [179] return rts - //SEG394 sin8s::@18 + //SEG393 sin8s::@18 b18: - //SEG395 [181] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsz1=vbsz2 + //SEG394 [180] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsz1=vbsz2 lda usinx_4 sta return jmp b4_from_b18 } -//SEG396 mulu8_sel +//SEG395 mulu8_sel // Calculate val*val for two unsigned byte values - the result is 8 selected bits of the 16-bit result. // The select parameter indicates how many of the highest bits of the 16-bit result to skip // mulu8_sel(byte zeropage($22) v1, byte zeropage($23) v2, byte zeropage($24) select) mulu8_sel: { - .label _0 = $54 - .label _1 = $56 + .label _0 = $53 + .label _1 = $55 .label v1 = $22 .label v2 = $23 - .label return = $46 - .label return_1 = $48 - .label return_2 = $4a - .label return_10 = $4d - .label return_11 = $4f + .label return = $45 + .label return_1 = $47 + .label return_2 = $49 + .label return_10 = $4c + .label return_11 = $4e .label select = $24 - .label return_12 = $58 - //SEG397 [183] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 -- vbuz1=vbuz2 + .label return_12 = $57 + //SEG396 [182] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 -- vbuz1=vbuz2 lda v1 sta mul8u.a - //SEG398 [184] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuz1=vbuz2 + //SEG397 [183] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuz1=vbuz2 lda v2 sta mul8u.b - //SEG399 [185] call mul8u - //SEG400 [128] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] + //SEG398 [184] call mul8u + //SEG399 [127] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] mul8u_from_mulu8_sel: - //SEG401 [128] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mulu8_sel->mul8u#0] -- register_copy - //SEG402 [128] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mulu8_sel->mul8u#1] -- register_copy + //SEG400 [127] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mulu8_sel->mul8u#0] -- register_copy + //SEG401 [127] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mulu8_sel->mul8u#1] -- register_copy jsr mul8u - //SEG403 [186] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG402 [185] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 lda mul8u.res sta mul8u.return_3 lda mul8u.res+1 sta mul8u.return_3+1 jmp b2 - //SEG404 mulu8_sel::@2 + //SEG403 mulu8_sel::@2 b2: - //SEG405 [187] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 -- vwuz1=vwuz2 + //SEG404 [186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 -- vwuz1=vwuz2 lda mul8u.return_3 sta _0 lda mul8u.return_3+1 sta _0+1 - //SEG406 [188] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz2_rol_vbuz3 + //SEG405 [187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz2_rol_vbuz3 lda _0 sta _1 lda _0+1 @@ -4752,126 +4741,126 @@ mulu8_sel: { dey bne !- !e: - //SEG407 [189] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuz1=_hi_vwuz2 + //SEG406 [188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuz1=_hi_vwuz2 lda _1+1 sta return_12 jmp breturn - //SEG408 mulu8_sel::@return + //SEG407 mulu8_sel::@return breturn: - //SEG409 [190] return + //SEG408 [189] return rts } -//SEG410 div16u +//SEG409 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: { - .label return = $5b + .label return = $5a .label return_2 = $2e - //SEG411 [192] call divr16u - //SEG412 [196] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG410 [191] call divr16u + //SEG411 [195] phi from div16u to divr16u [phi:div16u->divr16u] divr16u_from_div16u: jsr divr16u - //SEG413 [193] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG412 [192] (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 b2 - //SEG414 div16u::@2 + //SEG413 div16u::@2 b2: - //SEG415 [194] (word) div16u::return#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG414 [193] (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 - //SEG416 div16u::@return + //SEG415 div16u::@return breturn: - //SEG417 [195] return + //SEG416 [194] return rts } -//SEG418 divr16u +//SEG417 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($27) dividend, word zeropage($25) rem) divr16u: { - .label _1 = $5d - .label _2 = $5e + .label _1 = $5c + .label _2 = $5d .label rem = $25 .label dividend = $27 .label quotient = $29 .label i = $2b .label return = $29 - .label return_2 = $59 - //SEG419 [197] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + .label return_2 = $58 + //SEG418 [196] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG420 [197] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG419 [196] 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 - //SEG421 [197] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG420 [196] 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 - //SEG422 [197] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 + //SEG421 [196] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 lda #PI2_u4f12 sta dividend+1 - //SEG423 [197] phi (word) divr16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 + //SEG422 [196] phi (word) divr16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 lda #<0 sta rem lda #>0 sta rem+1 jmp b1 - //SEG424 [197] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG423 [196] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG425 [197] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG426 [197] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG427 [197] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG428 [197] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG424 [196] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG425 [196] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG426 [196] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG427 [196] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG429 divr16u::@1 + //SEG428 divr16u::@1 b1: - //SEG430 [198] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG429 [197] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG431 [199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuz1=_hi_vwuz2 + //SEG430 [198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG432 [200] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG431 [199] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _1 sta _2 - //SEG433 [201] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG432 [200] 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 - //SEG434 divr16u::@4 + //SEG433 divr16u::@4 b4: - //SEG435 [202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG434 [201] (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 - //SEG436 [203] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG435 [202] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG437 [203] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG436 [202] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG438 divr16u::@2 + //SEG437 divr16u::@2 b2: - //SEG439 [204] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG438 [203] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG440 [205] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG439 [204] (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 - //SEG441 [206] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG440 [205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.tabsize bcc b3_from_b2 @@ -4881,14 +4870,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG442 divr16u::@5 + //SEG441 divr16u::@5 b5: - //SEG443 [207] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG442 [206] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG444 [208] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG443 [207] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #main.tabsize sta rem+1 - //SEG445 [209] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG444 [208] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG446 [209] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG447 [209] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG445 [208] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG446 [208] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG448 divr16u::@3 + //SEG447 divr16u::@3 b3: - //SEG449 [210] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG448 [209] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG450 [211] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG449 [210] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b3 jmp b6 - //SEG451 divr16u::@6 + //SEG450 divr16u::@6 b6: - //SEG452 [212] (word) rem16u#1 ← (word) divr16u::rem#10 -- vwuz1=vwuz2 + //SEG451 [211] (word) rem16u#1 ← (word) divr16u::rem#10 -- vwuz1=vwuz2 lda rem sta rem16u lda rem+1 sta rem16u+1 jmp breturn - //SEG453 divr16u::@return + //SEG452 divr16u::@return breturn: - //SEG454 [213] return + //SEG453 [212] return rts } -//SEG455 print_cls +//SEG454 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $2c - //SEG456 [215] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG455 [214] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG457 [215] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG456 [214] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG458 [215] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG457 [214] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG459 [215] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG458 [214] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG460 print_cls::@1 + //SEG459 print_cls::@1 b1: - //SEG461 [216] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG460 [215] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG462 [217] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG461 [216] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG463 [218] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG462 [217] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -4959,9 +4948,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG464 print_cls::@return + //SEG463 print_cls::@return breturn: - //SEG465 [219] return + //SEG464 [218] return rts } print_hextab: .text "0123456789abcdef" @@ -5004,43 +4993,42 @@ Statement [116] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte:: Statement [119] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8su::a#0 mul8u::return#2 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::return#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ mul8su::a#0 ] Statement [120] (word) mul8su::m#0 ← (word) mul8u::return#2 [ mul8su::a#0 mul8su::m#0 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8su::m#0 ] ) always clobbers reg byte a -Statement [122] (byte~) mul8su::$5 ← > (word) mul8su::m#0 [ mul8su::m#0 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 ] ) always clobbers reg byte a -Statement [123] (byte~) mul8su::$6 ← > (word) mul8su::m#0 [ mul8su::m#0 mul8su::$6 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 mul8su::$6 ] ) always clobbers reg byte a -Statement [124] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 [ mul8su::m#0 mul8su::$10 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 mul8su::$10 ] ) always clobbers reg byte a -Statement [129] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] ) always clobbers reg byte a +Statement [122] (byte~) mul8su::$6 ← > (word) mul8su::m#0 [ mul8su::m#0 mul8su::$6 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 mul8su::$6 ] ) always clobbers reg byte a +Statement [123] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 [ mul8su::m#0 mul8su::$10 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 mul8su::$10 ] ) always clobbers reg byte a +Statement [128] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:148::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ sin8s::isUpper#10 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:69 [ sin8s::x1#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:68 [ sin8s::x1#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ mulu8_sel::select#5 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:73 [ sin8s::x3#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:76 [ sin8s::usinx#0 ] -Statement [133] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [135] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [139] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 [ sin8s::x#2 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#2 ] ) always clobbers reg byte a -Statement [140] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 [ sin8s::x#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#0 ] ) always clobbers reg byte a -Statement [142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#4 sin8s::isUpper#10 ] ) always clobbers reg byte a -Statement [143] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x#1 ] ) always clobbers reg byte a -Statement [145] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin8s::isUpper#10 sin8s::$6 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::$6 ] ) always clobbers reg byte a -Statement [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 [ sin8s::isUpper#10 sin8s::x1#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 ] ) always clobbers reg byte a -Statement [161] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 [ sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) always clobbers reg byte a -Statement [172] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ) always clobbers reg byte a -Statement [173] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#10 sin8s::usinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#1 ] ) always clobbers reg byte a -Statement [178] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 [ sin8s::sinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::sinx#1 ] ) always clobbers reg byte a -Statement [186] (word) mul8u::return#3 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#3 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] ) always clobbers reg byte a -Statement [187] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) always clobbers reg byte a -Statement [188] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::$1 ] ) always clobbers reg byte a -Statement [189] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::return#12 ] ) always clobbers reg byte a -Statement [193] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8u_table:7::div16u:10 [ divr16u::return#2 ] ) always clobbers reg byte a -Statement [194] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8u_table:7::div16u:10 [ div16u::return#0 ] ) always clobbers reg byte a -Statement [199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::dividend#2 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:72 [ sin8s::x3#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:75 [ sin8s::usinx#0 ] +Statement [132] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:148::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a +Statement [134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:148::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 [ sin8s::x#2 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#2 ] ) always clobbers reg byte a +Statement [139] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 [ sin8s::x#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#0 ] ) always clobbers reg byte a +Statement [141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#4 sin8s::isUpper#10 ] ) always clobbers reg byte a +Statement [142] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x#1 ] ) always clobbers reg byte a +Statement [144] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin8s::isUpper#10 sin8s::$6 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::$6 ] ) always clobbers reg byte a +Statement [145] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 [ sin8s::isUpper#10 sin8s::x1#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 ] ) always clobbers reg byte a +Statement [160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 [ sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) always clobbers reg byte a +Statement [171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ) always clobbers reg byte a +Statement [172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#10 sin8s::usinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#1 ] ) always clobbers reg byte a +Statement [177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 [ sin8s::sinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::sinx#1 ] ) always clobbers reg byte a +Statement [185] (word) mul8u::return#3 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#3 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] ) always clobbers reg byte a +Statement [186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) always clobbers reg byte a +Statement [187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::$1 ] ) always clobbers reg byte a +Statement [188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::return#12 ] ) always clobbers reg byte a +Statement [192] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8u_table:7::div16u:10 [ divr16u::return#2 ] ) always clobbers reg byte a +Statement [193] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8u_table:7::div16u:10 [ div16u::return#0 ] ) always clobbers reg byte a +Statement [198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::dividend#2 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:43 [ divr16u::i#2 divr16u::i#1 ] -Statement [200] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a -Statement [202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [206] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [208] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [212] (word) rem16u#1 ← (word) divr16u::rem#10 [ divr16u::return#0 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::return#0 ] ) always clobbers reg byte a -Statement [216] *((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 [218] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [199] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a +Statement [201] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [207] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [211] (word) rem16u#1 ← (word) divr16u::rem#10 [ divr16u::return#0 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::return#0 ] ) always clobbers reg byte a +Statement [215] *((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 [217] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a Statement [11] (word) div16u::return#2 ← (word) div16u::return#0 [ div16u::return#2 ] ( main:2::sin8u_table:7 [ div16u::return#2 ] ) always clobbers reg byte a Statement [12] (word) sin8u_table::step#0 ← (word) div16u::return#2 [ sin8u_table::step#0 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 ] ) always clobbers reg byte a Statement [14] (word) print_word::w#1 ← (word) sin8u_table::step#0 [ sin8u_table::step#0 print_word::w#1 print_char_cursor#2 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 print_word::w#1 print_char_cursor#2 ] ) always clobbers reg byte a @@ -5069,36 +5057,35 @@ Statement [104] (byte) print_byte::b#2 ← < (word) print_word::w#3 [ print_char Statement [116] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::sin8u_table:7::print_sbyte:54 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a Statement [119] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8su::a#0 mul8u::return#2 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::return#2 ] ) always clobbers reg byte a Statement [120] (word) mul8su::m#0 ← (word) mul8u::return#2 [ mul8su::a#0 mul8su::m#0 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8su::m#0 ] ) always clobbers reg byte a -Statement [122] (byte~) mul8su::$5 ← > (word) mul8su::m#0 [ mul8su::m#0 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 ] ) always clobbers reg byte a -Statement [123] (byte~) mul8su::$6 ← > (word) mul8su::m#0 [ mul8su::m#0 mul8su::$6 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 mul8su::$6 ] ) always clobbers reg byte a -Statement [124] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 [ mul8su::m#0 mul8su::$10 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 mul8su::$10 ] ) always clobbers reg byte a -Statement [129] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] ) always clobbers reg byte a -Statement [133] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [135] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [139] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 [ sin8s::x#2 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#2 ] ) always clobbers reg byte a -Statement [140] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 [ sin8s::x#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#0 ] ) always clobbers reg byte a -Statement [142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#4 sin8s::isUpper#10 ] ) always clobbers reg byte a -Statement [143] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x#1 ] ) always clobbers reg byte a -Statement [145] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin8s::isUpper#10 sin8s::$6 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::$6 ] ) always clobbers reg byte a -Statement [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 [ sin8s::isUpper#10 sin8s::x1#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 ] ) always clobbers reg byte a -Statement [161] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 [ sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) always clobbers reg byte a -Statement [172] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ) always clobbers reg byte a -Statement [173] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#10 sin8s::usinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#1 ] ) always clobbers reg byte a -Statement [178] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 [ sin8s::sinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::sinx#1 ] ) always clobbers reg byte a -Statement [186] (word) mul8u::return#3 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#3 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] ) always clobbers reg byte a -Statement [187] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) always clobbers reg byte a -Statement [188] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::$1 ] ) always clobbers reg byte a -Statement [189] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::return#12 ] ) always clobbers reg byte a -Statement [193] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8u_table:7::div16u:10 [ divr16u::return#2 ] ) always clobbers reg byte a -Statement [194] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8u_table:7::div16u:10 [ div16u::return#0 ] ) always clobbers reg byte a -Statement [199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [200] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a -Statement [202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [206] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [208] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [212] (word) rem16u#1 ← (word) divr16u::rem#10 [ divr16u::return#0 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::return#0 ] ) always clobbers reg byte a -Statement [216] *((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 [218] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [122] (byte~) mul8su::$6 ← > (word) mul8su::m#0 [ mul8su::m#0 mul8su::$6 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 mul8su::$6 ] ) always clobbers reg byte a +Statement [123] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 [ mul8su::m#0 mul8su::$10 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 mul8su::$10 ] ) always clobbers reg byte a +Statement [128] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:148::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] ) always clobbers reg byte a +Statement [132] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:148::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a +Statement [134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:148::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 [ sin8s::x#2 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#2 ] ) always clobbers reg byte a +Statement [139] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 [ sin8s::x#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#0 ] ) always clobbers reg byte a +Statement [141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#4 sin8s::isUpper#10 ] ) always clobbers reg byte a +Statement [142] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x#1 ] ) always clobbers reg byte a +Statement [144] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin8s::isUpper#10 sin8s::$6 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::$6 ] ) always clobbers reg byte a +Statement [145] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 [ sin8s::isUpper#10 sin8s::x1#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 ] ) always clobbers reg byte a +Statement [160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 [ sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) always clobbers reg byte a +Statement [171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ) always clobbers reg byte a +Statement [172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#10 sin8s::usinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#1 ] ) always clobbers reg byte a +Statement [177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 [ sin8s::sinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::sinx#1 ] ) always clobbers reg byte a +Statement [185] (word) mul8u::return#3 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#3 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] ) always clobbers reg byte a +Statement [186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) always clobbers reg byte a +Statement [187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::$1 ] ) always clobbers reg byte a +Statement [188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::return#12 ] ) always clobbers reg byte a +Statement [192] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8u_table:7::div16u:10 [ divr16u::return#2 ] ) always clobbers reg byte a +Statement [193] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8u_table:7::div16u:10 [ div16u::return#0 ] ) always clobbers reg byte a +Statement [198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [199] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a +Statement [201] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [207] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [211] (word) rem16u#1 ← (word) divr16u::rem#10 [ divr16u::return#0 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::return#0 ] ) always clobbers reg byte a +Statement [215] *((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 [217] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a Potential registers zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 ] : zp ZP_WORD:2 , Potential registers zp ZP_WORD:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] : zp ZP_WORD:4 , Potential registers zp ZP_WORD:6 [ sin8u_table::i#10 sin8u_table::i#1 ] : zp ZP_WORD:6 , @@ -5139,124 +5126,120 @@ Potential registers zp ZP_BYTE:58 [ sin8u_table::sinx_tr#0 ] : zp ZP_BYTE:58 , r Potential registers zp ZP_BYTE:59 [ print_byte::$0 ] : zp ZP_BYTE:59 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:60 [ print_byte::$2 ] : zp ZP_BYTE:60 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:61 [ mul8u::return#2 ] : zp ZP_WORD:61 , -Potential registers zp ZP_BYTE:63 [ mul8su::$5 ] : zp ZP_BYTE:63 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:64 [ mul8su::$6 ] : zp ZP_BYTE:64 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:65 [ mul8su::$10 ] : zp ZP_BYTE:65 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:66 [ mul8u::$1 ] : zp ZP_BYTE:66 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:67 [ sin8s::$6 ] : zp ZP_WORD:67 , -Potential registers zp ZP_BYTE:69 [ sin8s::x1#0 ] : zp ZP_BYTE:69 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:70 [ mulu8_sel::return#0 ] : zp ZP_BYTE:70 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:71 [ sin8s::x2#0 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:72 [ mulu8_sel::return#1 ] : zp ZP_BYTE:72 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:73 [ sin8s::x3#0 ] : zp ZP_BYTE:73 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:74 [ mulu8_sel::return#2 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:75 [ sin8s::x3_6#0 ] : zp ZP_BYTE:75 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:76 [ sin8s::usinx#0 ] : zp ZP_BYTE:76 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:77 [ mulu8_sel::return#10 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:78 [ sin8s::x4#0 ] : zp ZP_BYTE:78 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:79 [ mulu8_sel::return#11 ] : zp ZP_BYTE:79 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:80 [ sin8s::x5#0 ] : zp ZP_BYTE:80 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:81 [ sin8s::x5_128#0 ] : zp ZP_BYTE:81 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:82 [ mul8u::return#3 ] : zp ZP_WORD:82 , -Potential registers zp ZP_WORD:84 [ mulu8_sel::$0 ] : zp ZP_WORD:84 , -Potential registers zp ZP_WORD:86 [ mulu8_sel::$1 ] : zp ZP_WORD:86 , -Potential registers zp ZP_BYTE:88 [ mulu8_sel::return#12 ] : zp ZP_BYTE:88 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:89 [ divr16u::return#2 ] : zp ZP_WORD:89 , -Potential registers zp ZP_WORD:91 [ div16u::return#0 ] : zp ZP_WORD:91 , -Potential registers zp ZP_BYTE:93 [ divr16u::$1 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:94 [ divr16u::$2 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:95 [ rem16u#1 ] : zp ZP_WORD:95 , +Potential registers zp ZP_BYTE:63 [ mul8su::$6 ] : zp ZP_BYTE:63 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:64 [ mul8su::$10 ] : zp ZP_BYTE:64 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:65 [ mul8u::$1 ] : zp ZP_BYTE:65 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:66 [ sin8s::$6 ] : zp ZP_WORD:66 , +Potential registers zp ZP_BYTE:68 [ sin8s::x1#0 ] : zp ZP_BYTE:68 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:69 [ mulu8_sel::return#0 ] : zp ZP_BYTE:69 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:70 [ sin8s::x2#0 ] : zp ZP_BYTE:70 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:71 [ mulu8_sel::return#1 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:72 [ sin8s::x3#0 ] : zp ZP_BYTE:72 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:73 [ mulu8_sel::return#2 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:74 [ sin8s::x3_6#0 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:75 [ sin8s::usinx#0 ] : zp ZP_BYTE:75 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:76 [ mulu8_sel::return#10 ] : zp ZP_BYTE:76 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:77 [ sin8s::x4#0 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:78 [ mulu8_sel::return#11 ] : zp ZP_BYTE:78 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:79 [ sin8s::x5#0 ] : zp ZP_BYTE:79 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:80 [ sin8s::x5_128#0 ] : zp ZP_BYTE:80 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:81 [ mul8u::return#3 ] : zp ZP_WORD:81 , +Potential registers zp ZP_WORD:83 [ mulu8_sel::$0 ] : zp ZP_WORD:83 , +Potential registers zp ZP_WORD:85 [ mulu8_sel::$1 ] : zp ZP_WORD:85 , +Potential registers zp ZP_BYTE:87 [ mulu8_sel::return#12 ] : zp ZP_BYTE:87 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:88 [ divr16u::return#2 ] : zp ZP_WORD:88 , +Potential registers zp ZP_WORD:90 [ div16u::return#0 ] : zp ZP_WORD:90 , +Potential registers zp ZP_BYTE:92 [ divr16u::$1 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:93 [ divr16u::$2 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:94 [ rem16u#1 ] : zp ZP_WORD:94 , REGISTER UPLIFT SCOPES -Uplift Scope [mul8u] 346.86: zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 249.57: zp ZP_WORD:27 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 202: zp ZP_BYTE:66 [ mul8u::$1 ] 177.67: zp ZP_BYTE:24 [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] 8: zp ZP_BYTE:23 [ mul8u::b#2 mul8u::b#1 ] 4: zp ZP_WORD:61 [ mul8u::return#2 ] 4: zp ZP_WORD:82 [ mul8u::return#3 ] -Uplift Scope [] 225.55: zp ZP_WORD:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] 220.73: zp ZP_WORD:16 [ print_char_cursor#94 print_char_cursor#105 print_char_cursor#64 print_char_cursor#100 print_char_cursor#18 print_char_cursor#99 print_char_cursor#2 print_char_cursor#126 print_char_cursor#1 ] 20: zp ZP_WORD:95 [ rem16u#1 ] +Uplift Scope [mul8u] 346.86: zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 249.57: zp ZP_WORD:27 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 202: zp ZP_BYTE:65 [ mul8u::$1 ] 177.67: zp ZP_BYTE:24 [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] 8: zp ZP_BYTE:23 [ mul8u::b#2 mul8u::b#1 ] 4: zp ZP_WORD:61 [ mul8u::return#2 ] 4: zp ZP_WORD:81 [ mul8u::return#3 ] +Uplift Scope [] 225.55: zp ZP_WORD:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] 220.73: zp ZP_WORD:16 [ print_char_cursor#94 print_char_cursor#105 print_char_cursor#64 print_char_cursor#100 print_char_cursor#18 print_char_cursor#99 print_char_cursor#2 print_char_cursor#126 print_char_cursor#1 ] 20: zp ZP_WORD:94 [ rem16u#1 ] Uplift Scope [print_str] 305.5: zp ZP_WORD:12 [ print_str::str#10 print_str::str#12 print_str::str#0 ] -Uplift Scope [divr16u] 96.92: zp ZP_WORD:37 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 36.08: zp ZP_WORD:41 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp ZP_BYTE:93 [ divr16u::$1 ] 22: zp ZP_BYTE:94 [ divr16u::$2 ] 18.19: zp ZP_BYTE:43 [ divr16u::i#2 divr16u::i#1 ] 7.46: zp ZP_WORD:39 [ divr16u::dividend#2 divr16u::dividend#0 ] 4: zp ZP_WORD:89 [ divr16u::return#2 ] -Uplift Scope [sin8s] 27.5: zp ZP_WORD:30 [ sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 ] 22: zp ZP_BYTE:50 [ sin8s::return#2 ] 13: zp ZP_BYTE:33 [ sin8s::return#0 sin8s::return#5 sin8s::sinx#1 ] 10: zp ZP_BYTE:32 [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] 4: zp ZP_WORD:67 [ sin8s::$6 ] 4: zp ZP_BYTE:71 [ sin8s::x2#0 ] 4: zp ZP_BYTE:75 [ sin8s::x3_6#0 ] 4: zp ZP_BYTE:78 [ sin8s::x4#0 ] 4: zp ZP_BYTE:80 [ sin8s::x5#0 ] 4: zp ZP_BYTE:81 [ sin8s::x5_128#0 ] 1: zp ZP_BYTE:73 [ sin8s::x3#0 ] 0.64: zp ZP_BYTE:69 [ sin8s::x1#0 ] 0.33: zp ZP_BYTE:76 [ sin8s::usinx#0 ] 0.06: zp ZP_BYTE:29 [ sin8s::isUpper#10 ] -Uplift Scope [mulu8_sel] 24: zp ZP_BYTE:34 [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ] 21: zp ZP_BYTE:35 [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] 4: zp ZP_BYTE:70 [ mulu8_sel::return#0 ] 4: zp ZP_BYTE:72 [ mulu8_sel::return#1 ] 4: zp ZP_BYTE:74 [ mulu8_sel::return#2 ] 4: zp ZP_BYTE:77 [ mulu8_sel::return#10 ] 4: zp ZP_BYTE:79 [ mulu8_sel::return#11 ] 4: zp ZP_WORD:84 [ mulu8_sel::$0 ] 4: zp ZP_WORD:86 [ mulu8_sel::$1 ] 1.71: zp ZP_BYTE:88 [ mulu8_sel::return#12 ] 0.33: zp ZP_BYTE:36 [ mulu8_sel::select#5 ] -Uplift Scope [mul8su] 22: zp ZP_WORD:53 [ mul8su::return#2 ] 20: zp ZP_BYTE:63 [ mul8su::$5 ] 7.33: zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] 4: zp ZP_BYTE:64 [ mul8su::$6 ] 4: zp ZP_BYTE:65 [ mul8su::$10 ] 2.6: zp ZP_BYTE:52 [ mul8su::a#0 ] +Uplift Scope [divr16u] 96.92: zp ZP_WORD:37 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 36.08: zp ZP_WORD:41 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp ZP_BYTE:92 [ divr16u::$1 ] 22: zp ZP_BYTE:93 [ divr16u::$2 ] 18.19: zp ZP_BYTE:43 [ divr16u::i#2 divr16u::i#1 ] 7.46: zp ZP_WORD:39 [ divr16u::dividend#2 divr16u::dividend#0 ] 4: zp ZP_WORD:88 [ divr16u::return#2 ] +Uplift Scope [sin8s] 27.5: zp ZP_WORD:30 [ sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 ] 22: zp ZP_BYTE:50 [ sin8s::return#2 ] 13: zp ZP_BYTE:33 [ sin8s::return#0 sin8s::return#5 sin8s::sinx#1 ] 10: zp ZP_BYTE:32 [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] 4: zp ZP_WORD:66 [ sin8s::$6 ] 4: zp ZP_BYTE:70 [ sin8s::x2#0 ] 4: zp ZP_BYTE:74 [ sin8s::x3_6#0 ] 4: zp ZP_BYTE:77 [ sin8s::x4#0 ] 4: zp ZP_BYTE:79 [ sin8s::x5#0 ] 4: zp ZP_BYTE:80 [ sin8s::x5_128#0 ] 1: zp ZP_BYTE:72 [ sin8s::x3#0 ] 0.64: zp ZP_BYTE:68 [ sin8s::x1#0 ] 0.33: zp ZP_BYTE:75 [ sin8s::usinx#0 ] 0.06: zp ZP_BYTE:29 [ sin8s::isUpper#10 ] +Uplift Scope [mulu8_sel] 24: zp ZP_BYTE:34 [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ] 21: zp ZP_BYTE:35 [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] 4: zp ZP_BYTE:69 [ mulu8_sel::return#0 ] 4: zp ZP_BYTE:71 [ mulu8_sel::return#1 ] 4: zp ZP_BYTE:73 [ mulu8_sel::return#2 ] 4: zp ZP_BYTE:76 [ mulu8_sel::return#10 ] 4: zp ZP_BYTE:78 [ mulu8_sel::return#11 ] 4: zp ZP_WORD:83 [ mulu8_sel::$0 ] 4: zp ZP_WORD:85 [ mulu8_sel::$1 ] 1.71: zp ZP_BYTE:87 [ mulu8_sel::return#12 ] 0.33: zp ZP_BYTE:36 [ mulu8_sel::select#5 ] Uplift Scope [sin8u_table] 22: zp ZP_BYTE:57 [ sin8u_table::$21 ] 17.19: zp ZP_WORD:6 [ sin8u_table::i#10 sin8u_table::i#1 ] 8.75: zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 ] 3.75: zp ZP_WORD:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] 2.2: zp ZP_BYTE:51 [ sin8u_table::sinx#0 ] 2.2: zp ZP_WORD:55 [ sin8u_table::sinx_sc#0 ] 1.94: zp ZP_BYTE:58 [ sin8u_table::sinx_tr#0 ] 0.27: zp ZP_WORD:48 [ sin8u_table::step#0 ] Uplift Scope [print_byte] 39.25: zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#10 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] 4: zp ZP_BYTE:59 [ print_byte::$0 ] 4: zp ZP_BYTE:60 [ print_byte::$2 ] +Uplift Scope [mul8su] 22: zp ZP_WORD:53 [ mul8su::return#2 ] 7.33: zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] 4: zp ZP_BYTE:63 [ mul8su::$6 ] 4: zp ZP_BYTE:64 [ mul8su::$10 ] 2.6: zp ZP_BYTE:52 [ mul8su::a#0 ] Uplift Scope [print_word] 36.33: zp ZP_WORD:18 [ print_word::w#3 print_word::w#5 print_word::w#2 print_word::w#1 ] Uplift Scope [print_cls] 33: zp ZP_WORD:44 [ print_cls::sc#2 print_cls::sc#1 ] Uplift Scope [print_char] 14: zp ZP_BYTE:11 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] Uplift Scope [print_sword] 12.25: zp ZP_WORD:14 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] Uplift Scope [print_sbyte] 10.83: zp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Uplift Scope [div16u] 4: zp ZP_WORD:46 [ div16u::return#2 ] 1.33: zp ZP_WORD:91 [ div16u::return#0 ] +Uplift Scope [div16u] 4: zp ZP_WORD:46 [ div16u::return#2 ] 1.33: zp ZP_WORD:90 [ div16u::return#0 ] Uplift Scope [print_ln] Uplift Scope [main] -Uplifting [mul8u] best 24299 combination zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:27 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] reg byte a [ mul8u::b#2 mul8u::b#1 ] zp ZP_WORD:61 [ mul8u::return#2 ] zp ZP_WORD:82 [ mul8u::return#3 ] -Uplifting [] best 24299 combination zp ZP_WORD:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] zp ZP_WORD:16 [ print_char_cursor#94 print_char_cursor#105 print_char_cursor#64 print_char_cursor#100 print_char_cursor#18 print_char_cursor#99 print_char_cursor#2 print_char_cursor#126 print_char_cursor#1 ] zp ZP_WORD:95 [ rem16u#1 ] -Uplifting [print_str] best 24299 combination zp ZP_WORD:12 [ print_str::str#10 print_str::str#12 print_str::str#0 ] -Uplifting [divr16u] best 24089 combination zp ZP_WORD:37 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:41 [ 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:39 [ divr16u::dividend#2 divr16u::dividend#0 ] zp ZP_WORD:89 [ divr16u::return#2 ] -Uplifting [sin8s] best 23984 combination zp ZP_WORD:30 [ sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 ] reg byte a [ sin8s::return#2 ] reg byte a [ sin8s::return#0 sin8s::return#5 sin8s::sinx#1 ] reg byte x [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] zp ZP_WORD:67 [ sin8s::$6 ] zp ZP_BYTE:71 [ sin8s::x2#0 ] zp ZP_BYTE:75 [ sin8s::x3_6#0 ] zp ZP_BYTE:78 [ sin8s::x4#0 ] zp ZP_BYTE:80 [ sin8s::x5#0 ] zp ZP_BYTE:81 [ sin8s::x5_128#0 ] zp ZP_BYTE:73 [ sin8s::x3#0 ] zp ZP_BYTE:69 [ sin8s::x1#0 ] zp ZP_BYTE:76 [ sin8s::usinx#0 ] zp ZP_BYTE:29 [ sin8s::isUpper#10 ] +Uplifting [mul8u] best 24293 combination zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:27 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] reg byte a [ mul8u::b#2 mul8u::b#1 ] zp ZP_WORD:61 [ mul8u::return#2 ] zp ZP_WORD:81 [ mul8u::return#3 ] +Uplifting [] best 24293 combination zp ZP_WORD:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] zp ZP_WORD:16 [ print_char_cursor#94 print_char_cursor#105 print_char_cursor#64 print_char_cursor#100 print_char_cursor#18 print_char_cursor#99 print_char_cursor#2 print_char_cursor#126 print_char_cursor#1 ] zp ZP_WORD:94 [ rem16u#1 ] +Uplifting [print_str] best 24293 combination zp ZP_WORD:12 [ print_str::str#10 print_str::str#12 print_str::str#0 ] +Uplifting [divr16u] best 24083 combination zp ZP_WORD:37 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:41 [ 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:39 [ divr16u::dividend#2 divr16u::dividend#0 ] zp ZP_WORD:88 [ divr16u::return#2 ] +Uplifting [sin8s] best 23978 combination zp ZP_WORD:30 [ sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 ] reg byte a [ sin8s::return#2 ] reg byte a [ sin8s::return#0 sin8s::return#5 sin8s::sinx#1 ] reg byte x [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] zp ZP_WORD:66 [ sin8s::$6 ] zp ZP_BYTE:70 [ sin8s::x2#0 ] zp ZP_BYTE:74 [ sin8s::x3_6#0 ] zp ZP_BYTE:77 [ sin8s::x4#0 ] zp ZP_BYTE:79 [ sin8s::x5#0 ] zp ZP_BYTE:80 [ sin8s::x5_128#0 ] zp ZP_BYTE:72 [ sin8s::x3#0 ] zp ZP_BYTE:68 [ sin8s::x1#0 ] zp ZP_BYTE:75 [ sin8s::usinx#0 ] zp ZP_BYTE:29 [ sin8s::isUpper#10 ] Limited combination testing to 100 combinations of 5308416 possible. -Uplifting [mulu8_sel] best 23938 combination reg byte x [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ] reg byte y [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] reg byte a [ mulu8_sel::return#0 ] reg byte a [ mulu8_sel::return#1 ] zp ZP_BYTE:74 [ mulu8_sel::return#2 ] zp ZP_BYTE:77 [ mulu8_sel::return#10 ] zp ZP_BYTE:79 [ mulu8_sel::return#11 ] zp ZP_WORD:84 [ mulu8_sel::$0 ] zp ZP_WORD:86 [ mulu8_sel::$1 ] zp ZP_BYTE:88 [ mulu8_sel::return#12 ] zp ZP_BYTE:36 [ mulu8_sel::select#5 ] +Uplifting [mulu8_sel] best 23932 combination reg byte x [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ] reg byte y [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] reg byte a [ mulu8_sel::return#0 ] reg byte a [ mulu8_sel::return#1 ] zp ZP_BYTE:73 [ mulu8_sel::return#2 ] zp ZP_BYTE:76 [ mulu8_sel::return#10 ] zp ZP_BYTE:78 [ mulu8_sel::return#11 ] zp ZP_WORD:83 [ mulu8_sel::$0 ] zp ZP_WORD:85 [ mulu8_sel::$1 ] zp ZP_BYTE:87 [ mulu8_sel::return#12 ] zp ZP_BYTE:36 [ mulu8_sel::select#5 ] Limited combination testing to 100 combinations of 196608 possible. -Uplifting [mul8su] best 23923 combination zp ZP_WORD:53 [ mul8su::return#2 ] reg byte a [ mul8su::$5 ] zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] reg byte a [ mul8su::$6 ] reg byte a [ mul8su::$10 ] zp ZP_BYTE:52 [ mul8su::a#0 ] -Limited combination testing to 100 combinations of 192 possible. -Uplifting [sin8u_table] best 23813 combination reg byte a [ sin8u_table::$21 ] zp ZP_WORD:6 [ sin8u_table::i#10 sin8u_table::i#1 ] zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 ] zp ZP_WORD:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] zp ZP_BYTE:51 [ sin8u_table::sinx#0 ] zp ZP_WORD:55 [ sin8u_table::sinx_sc#0 ] reg byte x [ sin8u_table::sinx_tr#0 ] zp ZP_WORD:48 [ sin8u_table::step#0 ] -Uplifting [print_byte] best 23805 combination zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#10 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [print_word] best 23805 combination zp ZP_WORD:18 [ print_word::w#3 print_word::w#5 print_word::w#2 print_word::w#1 ] -Uplifting [print_cls] best 23805 combination zp ZP_WORD:44 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_char] best 23787 combination reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -Uplifting [print_sword] best 23787 combination zp ZP_WORD:14 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] -Uplifting [print_sbyte] best 23787 combination zp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Uplifting [div16u] best 23787 combination zp ZP_WORD:46 [ div16u::return#2 ] zp ZP_WORD:91 [ div16u::return#0 ] -Uplifting [print_ln] best 23787 combination -Uplifting [main] best 23787 combination +Uplifting [sin8u_table] best 23822 combination reg byte a [ sin8u_table::$21 ] zp ZP_WORD:6 [ sin8u_table::i#10 sin8u_table::i#1 ] zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 ] zp ZP_WORD:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] zp ZP_BYTE:51 [ sin8u_table::sinx#0 ] zp ZP_WORD:55 [ sin8u_table::sinx_sc#0 ] reg byte x [ sin8u_table::sinx_tr#0 ] zp ZP_WORD:48 [ sin8u_table::step#0 ] +Uplifting [print_byte] best 23814 combination zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#10 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [mul8su] best 23770 combination zp ZP_WORD:53 [ mul8su::return#2 ] zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] reg byte a [ mul8su::$6 ] reg byte a [ mul8su::$10 ] reg byte y [ mul8su::a#0 ] +Uplifting [print_word] best 23770 combination zp ZP_WORD:18 [ print_word::w#3 print_word::w#5 print_word::w#2 print_word::w#1 ] +Uplifting [print_cls] best 23770 combination zp ZP_WORD:44 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_char] best 23752 combination reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] +Uplifting [print_sword] best 23752 combination zp ZP_WORD:14 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] +Uplifting [print_sbyte] best 23752 combination zp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] +Uplifting [div16u] best 23752 combination zp ZP_WORD:46 [ div16u::return#2 ] zp ZP_WORD:90 [ div16u::return#0 ] +Uplifting [print_ln] best 23752 combination +Uplifting [main] best 23752 combination Attempting to uplift remaining variables inzp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#10 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] -Uplifting [print_byte] best 23787 combination zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#10 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] +Uplifting [print_byte] best 23752 combination zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#10 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] Attempting to uplift remaining variables inzp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Uplifting [print_sbyte] best 23787 combination zp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:71 [ sin8s::x2#0 ] -Uplifting [sin8s] best 23783 combination reg byte a [ sin8s::x2#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:74 [ mulu8_sel::return#2 ] -Uplifting [mulu8_sel] best 23777 combination reg byte a [ mulu8_sel::return#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:75 [ sin8s::x3_6#0 ] -Uplifting [sin8s] best 23773 combination reg byte a [ sin8s::x3_6#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:77 [ mulu8_sel::return#10 ] -Uplifting [mulu8_sel] best 23767 combination reg byte a [ mulu8_sel::return#10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:78 [ sin8s::x4#0 ] -Uplifting [sin8s] best 23763 combination reg byte a [ sin8s::x4#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:79 [ mulu8_sel::return#11 ] -Uplifting [mulu8_sel] best 23757 combination reg byte a [ mulu8_sel::return#11 ] -Attempting to uplift remaining variables inzp ZP_BYTE:80 [ sin8s::x5#0 ] -Uplifting [sin8s] best 23751 combination reg byte a [ sin8s::x5#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:81 [ sin8s::x5_128#0 ] -Uplifting [sin8s] best 23745 combination reg byte a [ sin8s::x5_128#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:52 [ mul8su::a#0 ] -Uplifting [mul8su] best 23713 combination reg byte y [ mul8su::a#0 ] +Uplifting [print_sbyte] best 23752 combination zp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:70 [ sin8s::x2#0 ] +Uplifting [sin8s] best 23748 combination reg byte a [ sin8s::x2#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:73 [ mulu8_sel::return#2 ] +Uplifting [mulu8_sel] best 23742 combination reg byte a [ mulu8_sel::return#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:74 [ sin8s::x3_6#0 ] +Uplifting [sin8s] best 23738 combination reg byte a [ sin8s::x3_6#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:76 [ mulu8_sel::return#10 ] +Uplifting [mulu8_sel] best 23732 combination reg byte a [ mulu8_sel::return#10 ] +Attempting to uplift remaining variables inzp ZP_BYTE:77 [ sin8s::x4#0 ] +Uplifting [sin8s] best 23728 combination reg byte a [ sin8s::x4#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:78 [ mulu8_sel::return#11 ] +Uplifting [mulu8_sel] best 23722 combination reg byte a [ mulu8_sel::return#11 ] +Attempting to uplift remaining variables inzp ZP_BYTE:79 [ sin8s::x5#0 ] +Uplifting [sin8s] best 23716 combination reg byte a [ sin8s::x5#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:80 [ sin8s::x5_128#0 ] +Uplifting [sin8s] best 23710 combination reg byte a [ sin8s::x5_128#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:51 [ sin8u_table::sinx#0 ] -Uplifting [sin8u_table] best 23713 combination zp ZP_BYTE:51 [ sin8u_table::sinx#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:88 [ mulu8_sel::return#12 ] -Uplifting [mulu8_sel] best 23695 combination reg byte a [ mulu8_sel::return#12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:73 [ sin8s::x3#0 ] -Uplifting [sin8s] best 23695 combination zp ZP_BYTE:73 [ sin8s::x3#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:69 [ sin8s::x1#0 ] -Uplifting [sin8s] best 23695 combination zp ZP_BYTE:69 [ sin8s::x1#0 ] +Uplifting [sin8u_table] best 23710 combination zp ZP_BYTE:51 [ sin8u_table::sinx#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:87 [ mulu8_sel::return#12 ] +Uplifting [mulu8_sel] best 23692 combination reg byte a [ mulu8_sel::return#12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:72 [ sin8s::x3#0 ] +Uplifting [sin8s] best 23692 combination zp ZP_BYTE:72 [ sin8s::x3#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:68 [ sin8s::x1#0 ] +Uplifting [sin8s] best 23692 combination zp ZP_BYTE:68 [ sin8s::x1#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:36 [ mulu8_sel::select#5 ] -Uplifting [mulu8_sel] best 23695 combination zp ZP_BYTE:36 [ mulu8_sel::select#5 ] -Attempting to uplift remaining variables inzp ZP_BYTE:76 [ sin8s::usinx#0 ] -Uplifting [sin8s] best 23695 combination zp ZP_BYTE:76 [ sin8s::usinx#0 ] +Uplifting [mulu8_sel] best 23692 combination zp ZP_BYTE:36 [ mulu8_sel::select#5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:75 [ sin8s::usinx#0 ] +Uplifting [sin8s] best 23692 combination zp ZP_BYTE:75 [ sin8s::usinx#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:29 [ sin8s::isUpper#10 ] -Uplifting [sin8s] best 23695 combination zp ZP_BYTE:29 [ sin8s::isUpper#10 ] +Uplifting [sin8s] best 23692 combination zp ZP_BYTE:29 [ sin8s::isUpper#10 ] Coalescing zero page register with common assignment [ zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#10 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] ] with [ zp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] ] with [ zp ZP_WORD:18 [ print_word::w#3 print_word::w#5 print_word::w#2 print_word::w#1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] ] with [ zp ZP_WORD:53 [ mul8su::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 mul8su::return#2 ] ] with [ zp ZP_WORD:61 [ mul8u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:82 [ mul8u::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:30 [ sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 ] ] with [ zp ZP_WORD:67 [ sin8s::$6 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:37 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:95 [ rem16u#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:41 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:89 [ divr16u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:81 [ mul8u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:30 [ sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 ] ] with [ zp ZP_WORD:66 [ sin8s::$6 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:37 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:94 [ rem16u#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:41 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:88 [ divr16u::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:46 [ div16u::return#2 ] ] with [ zp ZP_WORD:48 [ sin8u_table::step#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:46 [ div16u::return#2 sin8u_table::step#0 ] ] with [ zp ZP_WORD:91 [ div16u::return#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:84 [ mulu8_sel::$0 ] ] with [ zp ZP_WORD:86 [ mulu8_sel::$1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:46 [ div16u::return#2 sin8u_table::step#0 ] ] with [ zp ZP_WORD:90 [ div16u::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:83 [ mulu8_sel::$0 ] ] with [ zp ZP_WORD:85 [ mulu8_sel::$1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 mul8su::return#2 mul8u::return#2 ] ] with [ zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 mul8su::return#2 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 ] ] with [ zp ZP_WORD:55 [ sin8u_table::sinx_sc#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:41 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:46 [ div16u::return#2 sin8u_table::step#0 div16u::return#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 mul8su::return#2 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 sin8u_table::sinx_sc#0 ] ] with [ zp ZP_WORD:84 [ mulu8_sel::$0 mulu8_sel::$1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 mul8su::return#2 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 sin8u_table::sinx_sc#0 ] ] with [ zp ZP_WORD:83 [ mulu8_sel::$0 mulu8_sel::$1 ] ] - score: 1 Coalescing zero page register [ zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 ] ] with [ zp ZP_WORD:37 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ] ] Coalescing zero page register [ zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ] ] with [ zp ZP_WORD:44 [ print_cls::sc#2 print_cls::sc#1 ] ] Coalescing zero page register [ zp ZP_WORD:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] ] with [ zp ZP_WORD:39 [ divr16u::dividend#2 divr16u::dividend#0 ] ] @@ -5270,9 +5253,9 @@ Allocated (was zp ZP_WORD:16) zp ZP_WORD:13 [ print_char_cursor#94 print_char_cu Allocated (was zp ZP_WORD:21) zp ZP_WORD:15 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 mul8su::return#2 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 sin8u_table::sinx_sc#0 mulu8_sel::$0 mulu8_sel::$1 ] Allocated (was zp ZP_BYTE:36) zp ZP_BYTE:17 [ mulu8_sel::select#5 sin8u_table::sinx#0 ] Allocated (was zp ZP_WORD:41) zp ZP_WORD:18 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 div16u::return#2 sin8u_table::step#0 div16u::return#0 ] -Allocated (was zp ZP_BYTE:69) zp ZP_BYTE:20 [ sin8s::x1#0 ] -Allocated (was zp ZP_BYTE:73) zp ZP_BYTE:21 [ sin8s::x3#0 ] -Allocated (was zp ZP_BYTE:76) zp ZP_BYTE:22 [ sin8s::usinx#0 ] +Allocated (was zp ZP_BYTE:68) zp ZP_BYTE:20 [ sin8s::x1#0 ] +Allocated (was zp ZP_BYTE:72) zp ZP_BYTE:21 [ sin8s::x3#0 ] +Allocated (was zp ZP_BYTE:75) zp ZP_BYTE:22 [ sin8s::usinx#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -5310,7 +5293,7 @@ bend: main: { .label tabsize = $14 //SEG11 [5] call print_cls - //SEG12 [214] phi from main to print_cls [phi:main->print_cls] + //SEG12 [213] 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] @@ -5349,7 +5332,7 @@ sin8u_table: { .label x = 2 .label i = 6 //SEG20 [10] call div16u - //SEG21 [191] phi from sin8u_table to div16u [phi:sin8u_table->div16u] + //SEG21 [190] phi from sin8u_table to div16u [phi:sin8u_table->div16u] div16u_from_sin8u_table: jsr div16u //SEG22 [11] (word) div16u::return#2 ← (word) div16u::return#0 @@ -6022,10 +6005,10 @@ mul8su: { tya tax //SEG267 [118] call mul8u - //SEG268 [128] phi from mul8su to mul8u [phi:mul8su->mul8u] + //SEG268 [127] phi from mul8su to mul8u [phi:mul8su->mul8u] mul8u_from_mul8su: - //SEG269 [128] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8su->mul8u#0] -- register_copy - //SEG270 [128] phi (byte) mul8u::b#2 = ((byte))(const byte) mul8su::b#0 [phi:mul8su->mul8u#1] -- vbuaa=vbuc1 + //SEG269 [127] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8su->mul8u#0] -- register_copy + //SEG270 [127] phi (byte) mul8u::b#2 = ((byte))(const byte) mul8su::b#0 [phi:mul8su->mul8u#1] -- vbuaa=vbuc1 lda #b jsr mul8u //SEG271 [119] (word) mul8u::return#2 ← (word) mul8u::res#2 @@ -6039,71 +6022,69 @@ mul8su: { jmp b2 //SEG275 mul8su::@2 b2: - //SEG276 [122] (byte~) mul8su::$5 ← > (word) mul8su::m#0 -- vbuaa=_hi_vwuz1 + //SEG276 [122] (byte~) mul8su::$6 ← > (word) mul8su::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG277 [123] (byte~) mul8su::$6 ← > (word) mul8su::m#0 -- vbuaa=_hi_vwuz1 - lda m+1 - //SEG278 [124] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 -- vbuaa=vbuaa_minus_vbuc1 + //SEG277 [123] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 -- vbuaa=vbuaa_minus_vbuc1 sec sbc #b - //SEG279 [125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuaa + //SEG278 [124] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG280 [126] phi from mul8su::@2 mul8su::@4 to mul8su::@1 [phi:mul8su::@2/mul8su::@4->mul8su::@1] + //SEG279 [125] phi from mul8su::@2 mul8su::@4 to mul8su::@1 [phi:mul8su::@2/mul8su::@4->mul8su::@1] b1_from_b2: b1_from_b4: - //SEG281 [126] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@4->mul8su::@1#0] -- register_copy + //SEG280 [125] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@4->mul8su::@1#0] -- register_copy jmp b1 - //SEG282 mul8su::@1 + //SEG281 mul8su::@1 b1: jmp breturn - //SEG283 mul8su::@return + //SEG282 mul8su::@return breturn: - //SEG284 [127] return + //SEG283 [126] return rts } -//SEG285 mul8u +//SEG284 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word // mul8u(byte register(X) a, byte register(A) b) mul8u: { .label mb = $b .label res = $f .label return = $f - //SEG286 [129] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa + //SEG285 [128] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa sta mb lda #0 sta mb+1 - //SEG287 [130] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG286 [129] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG288 [130] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG289 [130] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG287 [129] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG288 [129] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #<0 sta res lda #>0 sta res+1 - //SEG290 [130] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG289 [129] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG291 mul8u::@1 + //SEG290 mul8u::@1 b1: - //SEG292 [131] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG291 [130] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 jmp breturn - //SEG293 mul8u::@return + //SEG292 mul8u::@return breturn: - //SEG294 [132] return + //SEG293 [131] return rts - //SEG295 mul8u::@2 + //SEG294 mul8u::@2 b2: - //SEG296 [133] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG295 [132] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG297 [134] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 + //SEG296 [133] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4_from_b2 jmp b7 - //SEG298 mul8u::@7 + //SEG297 mul8u::@7 b7: - //SEG299 [135] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG298 [134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -6111,28 +6092,28 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG300 [136] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG299 [135] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] b4_from_b2: b4_from_b7: - //SEG301 [136] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG300 [135] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy jmp b4 - //SEG302 mul8u::@4 + //SEG301 mul8u::@4 b4: - //SEG303 [137] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 + //SEG302 [136] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG304 [138] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG303 [137] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG305 [130] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG304 [129] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] b1_from_b4: - //SEG306 [130] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG307 [130] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG308 [130] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG305 [129] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG306 [129] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG307 [129] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG309 sin8s +//SEG308 sin8s // Calculate signed byte sinus sin(x) // x: unsigned word input u[4.12] in the interval $0000 - PI2_u4f12 // result: signed byte sin(x) s[0.7] - using the full range -$7f - $7f @@ -6146,7 +6127,7 @@ sin8s: { .label x3 = $15 .label usinx = $16 .label isUpper = $a - //SEG310 [139] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG309 [138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_u4f12 bcc b1_from_sin8s @@ -6156,9 +6137,9 @@ sin8s: { bcc b1_from_sin8s !: jmp b5 - //SEG311 sin8s::@5 + //SEG310 sin8s::@5 b5: - //SEG312 [140] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG311 [139] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 lda x sec sbc #PI_u4f12 sta x+1 - //SEG313 [141] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] + //SEG312 [140] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] b1_from_b5: - //SEG314 [141] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG313 [140] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG315 [141] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy + //SEG314 [140] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy jmp b1 - //SEG316 [141] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] + //SEG315 [140] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] b1_from_sin8s: - //SEG317 [141] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG316 [140] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG318 [141] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy + //SEG317 [140] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy jmp b1 - //SEG319 sin8s::@1 + //SEG318 sin8s::@1 b1: - //SEG320 [142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG319 [141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_HALF_u4f12 bcc b2_from_b1 @@ -6192,9 +6173,9 @@ sin8s: { bcc b2_from_b1 !: jmp b6 - //SEG321 sin8s::@6 + //SEG320 sin8s::@6 b6: - //SEG322 [143] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 -- vwuz1=vwuc1_minus_vwuz1 + //SEG321 [142] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 -- vwuz1=vwuc1_minus_vwuz1 sec lda #PI_u4f12 sbc x+1 sta x+1 - //SEG323 [144] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] + //SEG322 [143] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] b2_from_b1: b2_from_b6: - //SEG324 [144] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy + //SEG323 [143] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy jmp b2 - //SEG325 sin8s::@2 + //SEG324 sin8s::@2 b2: - //SEG326 [145] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 + //SEG325 [144] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 asl _6 rol _6+1 asl _6 rol _6+1 asl _6 rol _6+1 - //SEG327 [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 + //SEG326 [145] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 lda _6+1 sta x1 - //SEG328 [147] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 + //SEG327 [146] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG329 [148] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG328 [147] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG330 [149] call mulu8_sel - //SEG331 [182] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] + //SEG329 [148] call mulu8_sel + //SEG330 [181] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] mulu8_sel_from_b2: - //SEG332 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG331 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG333 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy - //SEG334 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy + //SEG332 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy + //SEG333 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG335 [150] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 + //SEG334 [149] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 jmp b10 - //SEG336 sin8s::@10 + //SEG335 sin8s::@10 b10: - //SEG337 [151] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 - //SEG338 [152] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa + //SEG336 [150] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 + //SEG337 [151] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa tax - //SEG339 [153] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG338 [152] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG340 [154] call mulu8_sel - //SEG341 [182] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] + //SEG339 [153] call mulu8_sel + //SEG340 [181] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] mulu8_sel_from_b10: - //SEG342 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG341 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu8_sel.select - //SEG343 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy - //SEG344 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy + //SEG342 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy + //SEG343 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG345 [155] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 + //SEG344 [154] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 jmp b11 - //SEG346 sin8s::@11 + //SEG345 sin8s::@11 b11: - //SEG347 [156] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa + //SEG346 [155] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa sta x3 - //SEG348 [157] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG347 [156] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 ldx x3 - //SEG349 [158] call mulu8_sel - //SEG350 [182] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] + //SEG348 [157] call mulu8_sel + //SEG349 [181] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] mulu8_sel_from_b11: - //SEG351 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG350 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu8_sel.select - //SEG352 [182] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuyy=vbuc1 + //SEG351 [181] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuyy=vbuc1 ldy #DIV_6 - //SEG353 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy + //SEG352 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG354 [159] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 + //SEG353 [158] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 jmp b12 - //SEG355 sin8s::@12 + //SEG354 sin8s::@12 b12: - //SEG356 [160] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 - //SEG357 [161] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuaa + //SEG355 [159] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 + //SEG356 [160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuaa eor #$ff sec adc x1 sta usinx - //SEG358 [162] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG357 [161] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 ldx x3 - //SEG359 [163] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG358 [162] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG360 [164] call mulu8_sel - //SEG361 [182] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] + //SEG359 [163] call mulu8_sel + //SEG360 [181] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] mulu8_sel_from_b12: - //SEG362 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG361 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG363 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy - //SEG364 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy + //SEG362 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy + //SEG363 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG365 [165] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 + //SEG364 [164] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 jmp b13 - //SEG366 sin8s::@13 + //SEG365 sin8s::@13 b13: - //SEG367 [166] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 - //SEG368 [167] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa + //SEG366 [165] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 + //SEG367 [166] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa tax - //SEG369 [168] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG368 [167] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG370 [169] call mulu8_sel - //SEG371 [182] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] + //SEG369 [168] call mulu8_sel + //SEG370 [181] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] mulu8_sel_from_b13: - //SEG372 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@13->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG371 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@13->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG373 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy - //SEG374 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy + //SEG372 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy + //SEG373 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG375 [170] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 + //SEG374 [169] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 jmp b14 - //SEG376 sin8s::@14 + //SEG375 sin8s::@14 b14: - //SEG377 [171] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 - //SEG378 [172] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 + //SEG376 [170] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 + //SEG377 [171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 lsr lsr lsr lsr - //SEG379 [173] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa + //SEG378 [172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa clc adc usinx tax - //SEG380 [174] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 -- vbuxx_lt_vbuc1_then_la1 + //SEG379 [173] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 -- vbuxx_lt_vbuc1_then_la1 cpx #$80 bcc b3_from_b14 jmp b7 - //SEG381 sin8s::@7 + //SEG380 sin8s::@7 b7: - //SEG382 [175] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx + //SEG381 [174] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx dex - //SEG383 [176] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] + //SEG382 [175] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] b3_from_b14: b3_from_b7: - //SEG384 [176] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy + //SEG383 [175] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy jmp b3 - //SEG385 sin8s::@3 + //SEG384 sin8s::@3 b3: - //SEG386 [177] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 -- vbuz1_eq_0_then_la1 + //SEG385 [176] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b18 jmp b8 - //SEG387 sin8s::@8 + //SEG386 sin8s::@8 b8: - //SEG388 [178] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx + //SEG387 [177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx txa eor #$ff clc adc #1 - //SEG389 [179] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] + //SEG388 [178] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] b4_from_b18: b4_from_b8: - //SEG390 [179] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy + //SEG389 [178] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy jmp b4 - //SEG391 sin8s::@4 + //SEG390 sin8s::@4 b4: jmp breturn - //SEG392 sin8s::@return + //SEG391 sin8s::@return breturn: - //SEG393 [180] return + //SEG392 [179] return rts - //SEG394 sin8s::@18 + //SEG393 sin8s::@18 b18: - //SEG395 [181] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx + //SEG394 [180] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx txa jmp b4_from_b18 } -//SEG396 mulu8_sel +//SEG395 mulu8_sel // Calculate val*val for two unsigned byte values - the result is 8 selected bits of the 16-bit result. // The select parameter indicates how many of the highest bits of the 16-bit result to skip // mulu8_sel(byte register(X) v1, byte register(Y) v2, byte zeropage($11) select) @@ -6376,21 +6357,21 @@ mulu8_sel: { .label _0 = $f .label _1 = $f .label select = $11 - //SEG397 [183] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 - //SEG398 [184] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy + //SEG396 [182] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 + //SEG397 [183] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy tya - //SEG399 [185] call mul8u - //SEG400 [128] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] + //SEG398 [184] call mul8u + //SEG399 [127] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] mul8u_from_mulu8_sel: - //SEG401 [128] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mulu8_sel->mul8u#0] -- register_copy - //SEG402 [128] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mulu8_sel->mul8u#1] -- register_copy + //SEG400 [127] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mulu8_sel->mul8u#0] -- register_copy + //SEG401 [127] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mulu8_sel->mul8u#1] -- register_copy jsr mul8u - //SEG403 [186] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG402 [185] (word) mul8u::return#3 ← (word) mul8u::res#2 jmp b2 - //SEG404 mulu8_sel::@2 + //SEG403 mulu8_sel::@2 b2: - //SEG405 [187] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 - //SEG406 [188] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 + //SEG404 [186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 + //SEG405 [187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 ldy select beq !e+ !: @@ -6399,37 +6380,37 @@ mulu8_sel: { dey bne !- !e: - //SEG407 [189] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 + //SEG406 [188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 lda _1+1 jmp breturn - //SEG408 mulu8_sel::@return + //SEG407 mulu8_sel::@return breturn: - //SEG409 [190] return + //SEG408 [189] return rts } -//SEG410 div16u +//SEG409 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: { .label return = $12 - //SEG411 [192] call divr16u - //SEG412 [196] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG410 [191] call divr16u + //SEG411 [195] phi from div16u to divr16u [phi:div16u->divr16u] divr16u_from_div16u: jsr divr16u - //SEG413 [193] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG412 [192] (word) divr16u::return#2 ← (word) divr16u::return#0 jmp b2 - //SEG414 div16u::@2 + //SEG413 div16u::@2 b2: - //SEG415 [194] (word) div16u::return#0 ← (word) divr16u::return#2 + //SEG414 [193] (word) div16u::return#0 ← (word) divr16u::return#2 jmp breturn - //SEG416 div16u::@return + //SEG415 div16u::@return breturn: - //SEG417 [195] return + //SEG416 [194] return rts } -//SEG418 divr16u +//SEG417 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 @@ -6440,66 +6421,66 @@ divr16u: { .label dividend = 4 .label quotient = $12 .label return = $12 - //SEG419 [197] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG418 [196] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG420 [197] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG419 [196] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG421 [197] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG420 [196] 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 - //SEG422 [197] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 + //SEG421 [196] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 lda #PI2_u4f12 sta dividend+1 - //SEG423 [197] phi (word) divr16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 + //SEG422 [196] phi (word) divr16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 lda #<0 sta rem lda #>0 sta rem+1 jmp b1 - //SEG424 [197] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG423 [196] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG425 [197] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG426 [197] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG427 [197] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG428 [197] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG424 [196] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG425 [196] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG426 [196] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG427 [196] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG429 divr16u::@1 + //SEG428 divr16u::@1 b1: - //SEG430 [198] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG429 [197] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG431 [199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 + //SEG430 [198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG432 [200] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG431 [199] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG433 [201] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG432 [200] 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 - //SEG434 divr16u::@4 + //SEG433 divr16u::@4 b4: - //SEG435 [202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG434 [201] (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 - //SEG436 [203] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG435 [202] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG437 [203] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG436 [202] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG438 divr16u::@2 + //SEG437 divr16u::@2 b2: - //SEG439 [204] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG438 [203] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG440 [205] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG439 [204] (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 - //SEG441 [206] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG440 [205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.tabsize bcc b3_from_b2 @@ -6509,14 +6490,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG442 divr16u::@5 + //SEG441 divr16u::@5 b5: - //SEG443 [207] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG442 [206] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG444 [208] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG443 [207] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #main.tabsize sta rem+1 - //SEG445 [209] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG444 [208] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG446 [209] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG447 [209] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG445 [208] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG446 [208] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG448 divr16u::@3 + //SEG447 divr16u::@3 b3: - //SEG449 [210] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG448 [209] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG450 [211] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG449 [210] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b3 jmp b6 - //SEG451 divr16u::@6 + //SEG450 divr16u::@6 b6: - //SEG452 [212] (word) rem16u#1 ← (word) divr16u::rem#10 + //SEG451 [211] (word) rem16u#1 ← (word) divr16u::rem#10 jmp breturn - //SEG453 divr16u::@return + //SEG452 divr16u::@return breturn: - //SEG454 [213] return + //SEG453 [212] return rts } -//SEG455 print_cls +//SEG454 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG456 [215] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG455 [214] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG457 [215] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG456 [214] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG458 [215] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG457 [214] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG459 [215] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG458 [214] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG460 print_cls::@1 + //SEG459 print_cls::@1 b1: - //SEG461 [216] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG460 [215] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG462 [217] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG461 [216] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG463 [218] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG462 [217] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -6582,9 +6563,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG464 print_cls::@return + //SEG463 print_cls::@return breturn: - //SEG465 [219] return + //SEG464 [218] return rts } print_hextab: .text "0123456789abcdef" @@ -6676,7 +6657,6 @@ Removing instruction lda #>0 Removing instruction lda #>0 Replacing instruction ldy sinx with TAY Removing instruction ldy #0 -Removing instruction lda m+1 Removing instruction lda #>0 Replacing instruction ldx x1 with TAX Replacing instruction ldy x1 with TAY @@ -6938,7 +6918,6 @@ FINAL SYMBOL TABLE (const word) main::tabsize#0 tabsize = (byte/signed byte/word/signed word/dword/signed dword) 20 (signed word()) mul8su((signed byte) mul8su::a , (byte) mul8su::b) (byte~) mul8su::$10 reg byte a 4.0 -(byte~) mul8su::$5 reg byte a 20.0 (byte~) mul8su::$6 reg byte a 4.0 (label) mul8su::@1 (label) mul8su::@2 @@ -7231,7 +7210,6 @@ reg byte a [ sin8u_table::$21 ] reg byte x [ sin8u_table::sinx_tr#0 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -reg byte a [ mul8su::$5 ] reg byte a [ mul8su::$6 ] reg byte a [ mul8su::$10 ] reg byte a [ mul8u::$1 ] @@ -7282,7 +7260,7 @@ Score: 19474 main: { .label tabsize = $14 //SEG11 [5] call print_cls - //SEG12 [214] phi from main to print_cls [phi:main->print_cls] + //SEG12 [213] 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 @@ -7314,7 +7292,7 @@ sin8u_table: { .label x = 2 .label i = 6 //SEG20 [10] call div16u - //SEG21 [191] phi from sin8u_table to div16u [phi:sin8u_table->div16u] + //SEG21 [190] phi from sin8u_table to div16u [phi:sin8u_table->div16u] jsr div16u //SEG22 [11] (word) div16u::return#2 ← (word) div16u::return#0 //SEG23 sin8u_table::@3 @@ -7855,9 +7833,9 @@ mul8su: { tya tax //SEG267 [118] call mul8u - //SEG268 [128] phi from mul8su to mul8u [phi:mul8su->mul8u] - //SEG269 [128] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8su->mul8u#0] -- register_copy - //SEG270 [128] phi (byte) mul8u::b#2 = ((byte))(const byte) mul8su::b#0 [phi:mul8su->mul8u#1] -- vbuaa=vbuc1 + //SEG268 [127] phi from mul8su to mul8u [phi:mul8su->mul8u] + //SEG269 [127] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8su->mul8u#0] -- register_copy + //SEG270 [127] phi (byte) mul8u::b#2 = ((byte))(const byte) mul8su::b#0 [phi:mul8su->mul8u#1] -- vbuaa=vbuc1 lda #b jsr mul8u //SEG271 [119] (word) mul8u::return#2 ← (word) mul8u::res#2 @@ -7867,57 +7845,56 @@ mul8su: { cpy #0 bpl b1 //SEG275 mul8su::@2 - //SEG276 [122] (byte~) mul8su::$5 ← > (word) mul8su::m#0 -- vbuaa=_hi_vwuz1 + //SEG276 [122] (byte~) mul8su::$6 ← > (word) mul8su::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG277 [123] (byte~) mul8su::$6 ← > (word) mul8su::m#0 -- vbuaa=_hi_vwuz1 - //SEG278 [124] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 -- vbuaa=vbuaa_minus_vbuc1 + //SEG277 [123] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 -- vbuaa=vbuaa_minus_vbuc1 sec sbc #b - //SEG279 [125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuaa + //SEG278 [124] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG280 [126] phi from mul8su::@2 mul8su::@4 to mul8su::@1 [phi:mul8su::@2/mul8su::@4->mul8su::@1] - //SEG281 [126] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@4->mul8su::@1#0] -- register_copy - //SEG282 mul8su::@1 + //SEG279 [125] phi from mul8su::@2 mul8su::@4 to mul8su::@1 [phi:mul8su::@2/mul8su::@4->mul8su::@1] + //SEG280 [125] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@4->mul8su::@1#0] -- register_copy + //SEG281 mul8su::@1 b1: - //SEG283 mul8su::@return - //SEG284 [127] return + //SEG282 mul8su::@return + //SEG283 [126] return rts } -//SEG285 mul8u +//SEG284 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word // mul8u(byte register(X) a, byte register(A) b) mul8u: { .label mb = $b .label res = $f .label return = $f - //SEG286 [129] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa + //SEG285 [128] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa sta mb lda #0 sta mb+1 - //SEG287 [130] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] - //SEG288 [130] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG289 [130] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG286 [129] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG287 [129] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG288 [129] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 sta res sta res+1 - //SEG290 [130] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy - //SEG291 mul8u::@1 + //SEG289 [129] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG290 mul8u::@1 b1: - //SEG292 [131] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG291 [130] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 - //SEG293 mul8u::@return - //SEG294 [132] return + //SEG292 mul8u::@return + //SEG293 [131] return rts - //SEG295 mul8u::@2 + //SEG294 mul8u::@2 b2: - //SEG296 [133] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG295 [132] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG297 [134] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 + //SEG296 [133] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 - //SEG298 mul8u::@7 - //SEG299 [135] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG297 mul8u::@7 + //SEG298 [134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -7925,24 +7902,24 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG300 [136] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] - //SEG301 [136] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy - //SEG302 mul8u::@4 + //SEG299 [135] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG300 [135] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG301 mul8u::@4 b4: - //SEG303 [137] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 + //SEG302 [136] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG304 [138] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG303 [137] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG305 [130] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] - //SEG306 [130] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG307 [130] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG308 [130] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG304 [129] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG305 [129] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG306 [129] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG307 [129] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG309 sin8s +//SEG308 sin8s // Calculate signed byte sinus sin(x) // x: unsigned word input u[4.12] in the interval $0000 - PI2_u4f12 // result: signed byte sin(x) s[0.7] - using the full range -$7f - $7f @@ -7956,7 +7933,7 @@ sin8s: { .label x3 = $15 .label usinx = $16 .label isUpper = $a - //SEG310 [139] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG309 [138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_u4f12 bcc b5 @@ -7965,8 +7942,8 @@ sin8s: { cmp #PI_u4f12 sta x+1 - //SEG313 [141] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] - //SEG314 [141] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG312 [140] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] + //SEG313 [140] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG315 [141] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy + //SEG314 [140] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy jmp b1 - //SEG316 [141] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] + //SEG315 [140] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] b5: - //SEG317 [141] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG316 [140] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG318 [141] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy - //SEG319 sin8s::@1 + //SEG317 [140] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy + //SEG318 sin8s::@1 b1: - //SEG320 [142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG319 [141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_HALF_u4f12 bcc b2 @@ -7997,8 +7974,8 @@ sin8s: { cmp #PI_u4f12 sbc x+1 sta x+1 - //SEG323 [144] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] - //SEG324 [144] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy - //SEG325 sin8s::@2 + //SEG322 [143] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] + //SEG323 [143] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy + //SEG324 sin8s::@2 b2: - //SEG326 [145] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 + //SEG325 [144] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 asl _6 rol _6+1 asl _6 rol _6+1 asl _6 rol _6+1 - //SEG327 [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 + //SEG326 [145] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 lda _6+1 sta x1 - //SEG328 [147] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 + //SEG327 [146] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 tax - //SEG329 [148] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG328 [147] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 tay - //SEG330 [149] call mulu8_sel - //SEG331 [182] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] - //SEG332 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG329 [148] call mulu8_sel + //SEG330 [181] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] + //SEG331 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG333 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy - //SEG334 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy + //SEG332 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy + //SEG333 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG335 [150] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 - //SEG336 sin8s::@10 - //SEG337 [151] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 - //SEG338 [152] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa + //SEG334 [149] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 + //SEG335 sin8s::@10 + //SEG336 [150] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 + //SEG337 [151] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa tax - //SEG339 [153] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG338 [152] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG340 [154] call mulu8_sel - //SEG341 [182] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] - //SEG342 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG339 [153] call mulu8_sel + //SEG340 [181] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] + //SEG341 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu8_sel.select - //SEG343 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy - //SEG344 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy + //SEG342 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy + //SEG343 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG345 [155] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 - //SEG346 sin8s::@11 - //SEG347 [156] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa + //SEG344 [154] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 + //SEG345 sin8s::@11 + //SEG346 [155] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa sta x3 - //SEG348 [157] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG347 [156] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 tax - //SEG349 [158] call mulu8_sel - //SEG350 [182] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] - //SEG351 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG348 [157] call mulu8_sel + //SEG349 [181] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] + //SEG350 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu8_sel.select - //SEG352 [182] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuyy=vbuc1 + //SEG351 [181] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuyy=vbuc1 ldy #DIV_6 - //SEG353 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy + //SEG352 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG354 [159] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 - //SEG355 sin8s::@12 - //SEG356 [160] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 - //SEG357 [161] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuaa + //SEG353 [158] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 + //SEG354 sin8s::@12 + //SEG355 [159] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 + //SEG356 [160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuaa eor #$ff sec adc x1 sta usinx - //SEG358 [162] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG357 [161] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 ldx x3 - //SEG359 [163] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG358 [162] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG360 [164] call mulu8_sel - //SEG361 [182] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] - //SEG362 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG359 [163] call mulu8_sel + //SEG360 [181] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] + //SEG361 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG363 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy - //SEG364 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy + //SEG362 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy + //SEG363 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG365 [165] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 - //SEG366 sin8s::@13 - //SEG367 [166] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 - //SEG368 [167] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa + //SEG364 [164] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 + //SEG365 sin8s::@13 + //SEG366 [165] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 + //SEG367 [166] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa tax - //SEG369 [168] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG368 [167] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG370 [169] call mulu8_sel - //SEG371 [182] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] - //SEG372 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@13->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG369 [168] call mulu8_sel + //SEG370 [181] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] + //SEG371 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@13->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG373 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy - //SEG374 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy + //SEG372 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy + //SEG373 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG375 [170] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 - //SEG376 sin8s::@14 - //SEG377 [171] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 - //SEG378 [172] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 + //SEG374 [169] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 + //SEG375 sin8s::@14 + //SEG376 [170] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 + //SEG377 [171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 lsr lsr lsr lsr - //SEG379 [173] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa + //SEG378 [172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa clc adc usinx tax - //SEG380 [174] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 -- vbuxx_lt_vbuc1_then_la1 + //SEG379 [173] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 -- vbuxx_lt_vbuc1_then_la1 cpx #$80 bcc b3 - //SEG381 sin8s::@7 - //SEG382 [175] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx + //SEG380 sin8s::@7 + //SEG381 [174] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx dex - //SEG383 [176] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] - //SEG384 [176] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy - //SEG385 sin8s::@3 + //SEG382 [175] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] + //SEG383 [175] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy + //SEG384 sin8s::@3 b3: - //SEG386 [177] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 -- vbuz1_eq_0_then_la1 + //SEG385 [176] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b18 - //SEG387 sin8s::@8 - //SEG388 [178] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx + //SEG386 sin8s::@8 + //SEG387 [177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx txa eor #$ff clc adc #1 - //SEG389 [179] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] - //SEG390 [179] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy - //SEG391 sin8s::@4 + //SEG388 [178] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] + //SEG389 [178] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy + //SEG390 sin8s::@4 b4: - //SEG392 sin8s::@return - //SEG393 [180] return + //SEG391 sin8s::@return + //SEG392 [179] return rts - //SEG394 sin8s::@18 + //SEG393 sin8s::@18 b18: - //SEG395 [181] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx + //SEG394 [180] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx txa jmp b4 } -//SEG396 mulu8_sel +//SEG395 mulu8_sel // Calculate val*val for two unsigned byte values - the result is 8 selected bits of the 16-bit result. // The select parameter indicates how many of the highest bits of the 16-bit result to skip // mulu8_sel(byte register(X) v1, byte register(Y) v2, byte zeropage($11) select) @@ -8150,18 +8127,18 @@ mulu8_sel: { .label _0 = $f .label _1 = $f .label select = $11 - //SEG397 [183] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 - //SEG398 [184] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy + //SEG396 [182] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 + //SEG397 [183] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy tya - //SEG399 [185] call mul8u - //SEG400 [128] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] - //SEG401 [128] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mulu8_sel->mul8u#0] -- register_copy - //SEG402 [128] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mulu8_sel->mul8u#1] -- register_copy + //SEG398 [184] call mul8u + //SEG399 [127] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] + //SEG400 [127] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mulu8_sel->mul8u#0] -- register_copy + //SEG401 [127] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mulu8_sel->mul8u#1] -- register_copy jsr mul8u - //SEG403 [186] (word) mul8u::return#3 ← (word) mul8u::res#2 - //SEG404 mulu8_sel::@2 - //SEG405 [187] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 - //SEG406 [188] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 + //SEG402 [185] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG403 mulu8_sel::@2 + //SEG404 [186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 + //SEG405 [187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 ldy select beq !e+ !: @@ -8170,30 +8147,30 @@ mulu8_sel: { dey bne !- !e: - //SEG407 [189] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 + //SEG406 [188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 lda _1+1 - //SEG408 mulu8_sel::@return - //SEG409 [190] return + //SEG407 mulu8_sel::@return + //SEG408 [189] return rts } -//SEG410 div16u +//SEG409 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: { .label return = $12 - //SEG411 [192] call divr16u - //SEG412 [196] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG410 [191] call divr16u + //SEG411 [195] phi from div16u to divr16u [phi:div16u->divr16u] jsr divr16u - //SEG413 [193] (word) divr16u::return#2 ← (word) divr16u::return#0 - //SEG414 div16u::@2 - //SEG415 [194] (word) div16u::return#0 ← (word) divr16u::return#2 - //SEG416 div16u::@return - //SEG417 [195] return + //SEG412 [192] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG413 div16u::@2 + //SEG414 [193] (word) div16u::return#0 ← (word) divr16u::return#2 + //SEG415 div16u::@return + //SEG416 [194] return rts } -//SEG418 divr16u +//SEG417 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 @@ -8204,55 +8181,55 @@ divr16u: { .label dividend = 4 .label quotient = $12 .label return = $12 - //SEG419 [197] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - //SEG420 [197] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG418 [196] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG419 [196] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG421 [197] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG420 [196] 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 - //SEG422 [197] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 + //SEG421 [196] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 lda #PI2_u4f12 sta dividend+1 - //SEG423 [197] phi (word) divr16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 + //SEG422 [196] phi (word) divr16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 txa sta rem sta rem+1 - //SEG424 [197] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - //SEG425 [197] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG426 [197] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG427 [197] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG428 [197] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy - //SEG429 divr16u::@1 + //SEG423 [196] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG424 [196] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG425 [196] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG426 [196] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG427 [196] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG428 divr16u::@1 b1: - //SEG430 [198] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG429 [197] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG431 [199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 + //SEG430 [198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG432 [200] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG431 [199] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG433 [201] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG432 [200] 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 - //SEG434 divr16u::@4 - //SEG435 [202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG433 divr16u::@4 + //SEG434 [201] (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 - //SEG436 [203] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - //SEG437 [203] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy - //SEG438 divr16u::@2 + //SEG435 [202] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG436 [202] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG437 divr16u::@2 b2: - //SEG439 [204] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG438 [203] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG440 [205] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG439 [204] (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 - //SEG441 [206] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG440 [205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.tabsize bcc b3 @@ -8261,13 +8238,13 @@ divr16u: { cmp #main.tabsize sta rem+1 - //SEG445 [209] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - //SEG446 [209] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG447 [209] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy - //SEG448 divr16u::@3 + //SEG444 [208] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG445 [208] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG446 [208] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG447 divr16u::@3 b3: - //SEG449 [210] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG448 [209] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG450 [211] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG449 [210] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG451 divr16u::@6 - //SEG452 [212] (word) rem16u#1 ← (word) divr16u::rem#10 - //SEG453 divr16u::@return - //SEG454 [213] return + //SEG450 divr16u::@6 + //SEG451 [211] (word) rem16u#1 ← (word) divr16u::rem#10 + //SEG452 divr16u::@return + //SEG453 [212] return rts } -//SEG455 print_cls +//SEG454 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 2 - //SEG456 [215] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG457 [215] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG455 [214] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG456 [214] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - //SEG458 [215] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG459 [215] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG460 print_cls::@1 + //SEG457 [214] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG458 [214] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG459 print_cls::@1 b1: - //SEG461 [216] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG460 [215] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG462 [217] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG461 [216] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG463 [218] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG462 [217] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 lda sc cmp #<$400+$3e8 bne b1 - //SEG464 print_cls::@return - //SEG465 [219] return + //SEG463 print_cls::@return + //SEG464 [218] return rts } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/sinusgenscale8.sym b/src/test/ref/sinusgenscale8.sym index b9f2a389e..6934f8e7f 100644 --- a/src/test/ref/sinusgenscale8.sym +++ b/src/test/ref/sinusgenscale8.sym @@ -58,7 +58,6 @@ (const word) main::tabsize#0 tabsize = (byte/signed byte/word/signed word/dword/signed dword) 20 (signed word()) mul8su((signed byte) mul8su::a , (byte) mul8su::b) (byte~) mul8su::$10 reg byte a 4.0 -(byte~) mul8su::$5 reg byte a 20.0 (byte~) mul8su::$6 reg byte a 4.0 (label) mul8su::@1 (label) mul8su::@2 @@ -351,7 +350,6 @@ reg byte a [ sin8u_table::$21 ] reg byte x [ sin8u_table::sinx_tr#0 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -reg byte a [ mul8su::$5 ] reg byte a [ mul8su::$6 ] reg byte a [ mul8su::$10 ] reg byte a [ mul8u::$1 ] diff --git a/src/test/ref/test-lowhigh.asm b/src/test/ref/test-lowhigh.asm index 3237c84f1..30bc821bc 100644 --- a/src/test/ref/test-lowhigh.asm +++ b/src/test/ref/test-lowhigh.asm @@ -4,9 +4,7 @@ .label print_line_cursor = 6 .label print_char_cursor = 8 main: { - .label _1 = 6 .label _2 = $a - .label _4 = 6 .label _5 = $a .label _15 = $a .label _19 = $a @@ -34,10 +32,6 @@ main: { lda #>$12345678>>$10 sta dw+3 b1: - lda dw+2 - sta _1 - lda dw+3 - sta _1+1 lda dw+2 sta _2 lda dw+3 @@ -57,11 +51,6 @@ main: { sta dw2+2 lda _32+1 sta dw2+3 - // Test set/get high word of dword - lda dw2 - sta _4 - lda dw2+1 - sta _4+1 lda dw sta _5 lda dw+1 diff --git a/src/test/ref/test-lowhigh.cfg b/src/test/ref/test-lowhigh.cfg index 7078b3db6..9fd1b40f9 100644 --- a/src/test/ref/test-lowhigh.cfg +++ b/src/test/ref/test-lowhigh.cfg @@ -15,151 +15,149 @@ main::@1: scope:[main] from main main::@18 [6] (byte*) print_line_cursor#19 ← phi( main::@18/(byte*) print_line_cursor#1 main/((byte*))(word/signed word/dword/signed dword) 1024 ) [6] (byte*) print_char_cursor#69 ← phi( main::@18/(byte*~) print_char_cursor#72 main/((byte*))(word/signed word/dword/signed dword) 1024 ) [6] (dword) main::dw#10 ← phi( main::@18/(dword) main::dw#1 main/(dword/signed dword) 305419896 ) - [7] (word~) main::$1 ← > (dword) main::dw#10 - [8] (word~) main::$2 ← > (dword) main::dw#10 - [9] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 - [10] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 - [11] (word~) main::$4 ← < (dword) main::dw2#1 - [12] (word~) main::$5 ← < (dword) main::dw#10 - [13] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 - [14] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 - [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 - [16] call print_dword + [7] (word~) main::$2 ← > (dword) main::dw#10 + [8] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 + [9] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 + [10] (word~) main::$5 ← < (dword) main::dw#10 + [11] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 + [12] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 + [13] (dword) print_dword::dw#0 ← (dword) main::dw2#10 + [14] call print_dword to:main::@4 main::@4: scope:[main] from main::@1 - [17] phi() - [18] call print_char + [15] phi() + [16] call print_char to:main::@5 main::@5: scope:[main] from main::@4 - [19] (word) print_word::w#2 ← > (dword) main::dw2#10 - [20] call print_word + [17] (word) print_word::w#2 ← > (dword) main::dw2#10 + [18] call print_word to:main::@6 main::@6: scope:[main] from main::@5 - [21] phi() - [22] call print_char + [19] phi() + [20] call print_char to:main::@7 main::@7: scope:[main] from main::@6 - [23] (word) print_word::w#3 ← < (dword) main::dw2#10 - [24] call print_word + [21] (word) print_word::w#3 ← < (dword) main::dw2#10 + [22] call print_word to:main::@8 main::@8: scope:[main] from main::@7 - [25] phi() - [26] call print_char + [23] phi() + [24] call print_char to:main::@9 main::@9: scope:[main] from main::@8 - [27] (word~) main::$15 ← > (dword) main::dw2#10 - [28] (byte) print_byte::b#2 ← > (word~) main::$15 - [29] call print_byte + [25] (word~) main::$15 ← > (dword) main::dw2#10 + [26] (byte) print_byte::b#2 ← > (word~) main::$15 + [27] call print_byte to:main::@10 main::@10: scope:[main] from main::@9 - [30] phi() - [31] call print_char + [28] phi() + [29] call print_char to:main::@11 main::@11: scope:[main] from main::@10 - [32] (word~) main::$19 ← > (dword) main::dw2#10 - [33] (byte) print_byte::b#3 ← < (word~) main::$19 - [34] call print_byte + [30] (word~) main::$19 ← > (dword) main::dw2#10 + [31] (byte) print_byte::b#3 ← < (word~) main::$19 + [32] call print_byte to:main::@12 main::@12: scope:[main] from main::@11 - [35] phi() - [36] call print_char + [33] phi() + [34] call print_char to:main::@13 main::@13: scope:[main] from main::@12 - [37] (word~) main::$23 ← < (dword) main::dw2#10 - [38] (byte) print_byte::b#4 ← > (word~) main::$23 - [39] call print_byte + [35] (word~) main::$23 ← < (dword) main::dw2#10 + [36] (byte) print_byte::b#4 ← > (word~) main::$23 + [37] call print_byte to:main::@14 main::@14: scope:[main] from main::@13 - [40] phi() - [41] call print_char + [38] phi() + [39] call print_char to:main::@15 main::@15: scope:[main] from main::@14 - [42] (word~) main::$27 ← < (dword) main::dw2#10 - [43] (byte) print_byte::b#5 ← < (word~) main::$27 - [44] call print_byte + [40] (word~) main::$27 ← < (dword) main::dw2#10 + [41] (byte) print_byte::b#5 ← < (word~) main::$27 + [42] call print_byte to:main::@16 main::@16: scope:[main] from main::@15 - [45] phi() - [46] call print_ln + [43] phi() + [44] call print_ln to:main::@17 main::@17: scope:[main] from main::@16 - [47] (dword) main::dw#1 ← ++ (dword) main::dw#10 - [48] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 + [45] (dword) main::dw#1 ← ++ (dword) main::dw#10 + [46] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 to:main::@return main::@return: scope:[main] from main::@17 - [49] return + [47] return to:@return main::@18: scope:[main] from main::@17 - [50] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 + [48] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 to:main::@1 print_ln: scope:[print_ln] from main::@16 - [51] phi() + [49] phi() to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - [52] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#19 print_ln::@1/(byte*) print_line_cursor#1 ) - [53] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [54] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 + [50] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#19 print_ln::@1/(byte*) print_line_cursor#1 ) + [51] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [52] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 - [55] return + [53] return to:@return print_byte: scope:[print_byte] from main::@11 main::@13 main::@15 main::@9 print_word print_word::@1 - [56] (byte*) print_char_cursor#67 ← phi( main::@11/(byte*) print_char_cursor#12 main::@13/(byte*) print_char_cursor#12 main::@15/(byte*) print_char_cursor#12 main::@9/(byte*) print_char_cursor#12 print_word/(byte*) print_char_cursor#65 print_word::@1/(byte*) print_char_cursor#12 ) - [56] (byte) print_byte::b#6 ← phi( main::@11/(byte) print_byte::b#3 main::@13/(byte) print_byte::b#4 main::@15/(byte) print_byte::b#5 main::@9/(byte) print_byte::b#2 print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) - [57] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [58] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [59] call print_char + [54] (byte*) print_char_cursor#67 ← phi( main::@11/(byte*) print_char_cursor#12 main::@13/(byte*) print_char_cursor#12 main::@15/(byte*) print_char_cursor#12 main::@9/(byte*) print_char_cursor#12 print_word/(byte*) print_char_cursor#65 print_word::@1/(byte*) print_char_cursor#12 ) + [54] (byte) print_byte::b#6 ← phi( main::@11/(byte) print_byte::b#3 main::@13/(byte) print_byte::b#4 main::@15/(byte) print_byte::b#5 main::@9/(byte) print_byte::b#2 print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) + [55] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [56] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [57] call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - [60] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 - [61] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [62] call print_char + [58] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 + [59] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [60] call print_char to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 - [63] return + [61] return to:@return print_char: scope:[print_char] from main::@10 main::@12 main::@14 main::@4 main::@6 main::@8 print_byte print_byte::@1 - [64] (byte*) print_char_cursor#44 ← phi( main::@10/(byte*) print_char_cursor#12 main::@12/(byte*) print_char_cursor#12 main::@14/(byte*) print_char_cursor#12 main::@4/(byte*) print_char_cursor#12 main::@6/(byte*) print_char_cursor#12 main::@8/(byte*) print_char_cursor#12 print_byte/(byte*) print_char_cursor#67 print_byte::@1/(byte*) print_char_cursor#12 ) - [64] (byte) print_char::ch#8 ← phi( main::@10/(byte) ' ' main::@12/(byte) ' ' main::@14/(byte) ' ' main::@4/(byte) ' ' main::@6/(byte) ' ' main::@8/(byte) ' ' print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) - [65] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 - [66] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 + [62] (byte*) print_char_cursor#44 ← phi( main::@10/(byte*) print_char_cursor#12 main::@12/(byte*) print_char_cursor#12 main::@14/(byte*) print_char_cursor#12 main::@4/(byte*) print_char_cursor#12 main::@6/(byte*) print_char_cursor#12 main::@8/(byte*) print_char_cursor#12 print_byte/(byte*) print_char_cursor#67 print_byte::@1/(byte*) print_char_cursor#12 ) + [62] (byte) print_char::ch#8 ← phi( main::@10/(byte) ' ' main::@12/(byte) ' ' main::@14/(byte) ' ' main::@4/(byte) ' ' main::@6/(byte) ' ' main::@8/(byte) ' ' print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) + [63] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 + [64] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [67] return + [65] return to:@return print_word: scope:[print_word] from main::@5 main::@7 print_dword print_dword::@1 - [68] (byte*) print_char_cursor#65 ← phi( main::@5/(byte*) print_char_cursor#12 main::@7/(byte*) print_char_cursor#12 print_dword/(byte*) print_char_cursor#69 print_dword::@1/(byte*) print_char_cursor#12 ) - [68] (word) print_word::w#4 ← phi( main::@5/(word) print_word::w#2 main::@7/(word) print_word::w#3 print_dword/(word) print_word::w#0 print_dword::@1/(word) print_word::w#1 ) - [69] (byte) print_byte::b#0 ← > (word) print_word::w#4 - [70] call print_byte + [66] (byte*) print_char_cursor#65 ← phi( main::@5/(byte*) print_char_cursor#12 main::@7/(byte*) print_char_cursor#12 print_dword/(byte*) print_char_cursor#69 print_dword::@1/(byte*) print_char_cursor#12 ) + [66] (word) print_word::w#4 ← phi( main::@5/(word) print_word::w#2 main::@7/(word) print_word::w#3 print_dword/(word) print_word::w#0 print_dword::@1/(word) print_word::w#1 ) + [67] (byte) print_byte::b#0 ← > (word) print_word::w#4 + [68] call print_byte to:print_word::@1 print_word::@1: scope:[print_word] from print_word - [71] (byte) print_byte::b#1 ← < (word) print_word::w#4 - [72] call print_byte + [69] (byte) print_byte::b#1 ← < (word) print_word::w#4 + [70] call print_byte to:print_word::@return print_word::@return: scope:[print_word] from print_word::@1 - [73] return + [71] return to:@return print_dword: scope:[print_dword] from main::@1 - [74] (word) print_word::w#0 ← > (dword) print_dword::dw#0 - [75] call print_word + [72] (word) print_word::w#0 ← > (dword) print_dword::dw#0 + [73] call print_word to:print_dword::@1 print_dword::@1: scope:[print_dword] from print_dword - [76] (word) print_word::w#1 ← < (dword) print_dword::dw#0 - [77] call print_word + [74] (word) print_word::w#1 ← < (dword) print_dword::dw#0 + [75] call print_word to:print_dword::@return print_dword::@return: scope:[print_dword] from print_dword::@1 - [78] return + [76] return to:@return print_cls: scope:[print_cls] from main - [79] phi() + [77] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [80] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [81] *((byte*) print_cls::sc#2) ← (byte) ' ' - [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [83] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 + [78] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [79] *((byte*) print_cls::sc#2) ← (byte) ' ' + [80] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [81] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [84] return + [82] return to:@return diff --git a/src/test/ref/test-lowhigh.log b/src/test/ref/test-lowhigh.log index d16f596a7..53a6e2c5f 100644 --- a/src/test/ref/test-lowhigh.log +++ b/src/test/ref/test-lowhigh.log @@ -160,12 +160,10 @@ main::@1: scope:[main] from main::@17 main::@3 (byte*) print_char_cursor#69 ← phi( main::@17/(byte*) print_char_cursor#30 main::@3/(byte*) print_char_cursor#16 ) (dword) main::dw#2 ← phi( main::@17/(dword) main::dw#1 main::@3/(dword) main::dw#0 ) (dword) main::dw2#0 ← (dword) main::dw#2 - (word~) main::$1 ← > (dword) main::dw2#0 (word~) main::$2 ← > (dword) main::dw#2 (word/signed dword/dword~) main::$3 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 (word/signed dword/dword~) main::$32 ← (word/signed dword/dword~) main::$3 (dword) main::dw2#1 ← (dword) main::dw2#0 hi= (word/signed dword/dword~) main::$32 - (word~) main::$4 ← < (dword) main::dw2#1 (word~) main::$5 ← < (dword) main::dw#2 (word/signed dword/dword~) main::$6 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 (word/signed dword/dword~) main::$33 ← (word/signed dword/dword~) main::$6 @@ -337,7 +335,6 @@ SYMBOL TABLE SSA (label) @begin (label) @end (void()) main() -(word~) main::$1 (word~) main::$12 (word~) main::$15 (byte~) main::$16 @@ -352,7 +349,6 @@ SYMBOL TABLE SSA (bool~) main::$31 (word/signed dword/dword~) main::$32 (word/signed dword/dword~) main::$33 -(word~) main::$4 (word~) main::$5 (word/signed dword/dword~) main::$6 (word~) main::$9 @@ -682,7 +678,7 @@ Redundant Phi (byte*) print_char_cursor#32 (byte*) print_char_cursor#30 Successful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) print_ln::$1 [8] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 Simple Condition (bool~) print_cls::$1 [72] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 -Simple Condition (bool~) main::$31 [166] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@1 +Simple Condition (bool~) main::$31 [164] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) print_line_cursor#0 = ((byte*))1024 Constant (const byte[]) print_hextab#0 = $0 @@ -738,48 +734,48 @@ Adding NOP phi() at start of main::@16 Adding NOP phi() at start of print_cls CALL GRAPH Calls in [] to main:2 -Calls in [main] to print_cls:5 print_dword:16 print_char:18 print_word:22 print_char:24 print_word:28 print_char:30 print_byte:35 print_char:37 print_byte:42 print_char:44 print_byte:49 print_char:51 print_byte:56 print_ln:58 -Calls in [print_byte] to print_char:76 print_char:81 -Calls in [print_word] to print_byte:91 print_byte:95 -Calls in [print_dword] to print_word:100 print_word:104 +Calls in [main] to print_cls:5 print_dword:14 print_char:16 print_word:20 print_char:22 print_word:26 print_char:28 print_byte:33 print_char:35 print_byte:40 print_char:42 print_byte:47 print_char:49 print_byte:54 print_ln:56 +Calls in [print_byte] to print_char:74 print_char:79 +Calls in [print_word] to print_byte:89 print_byte:93 +Calls in [print_dword] to print_word:98 print_word:102 Created 11 initial phi equivalence classes -Coalesced [17] print_char_cursor#82 ← print_char_cursor#12 -Coalesced [20] print_word::w#6 ← print_word::w#2 -Coalesced [21] print_char_cursor#87 ← print_char_cursor#12 -Coalesced (already) [23] print_char_cursor#83 ← print_char_cursor#12 -Coalesced [26] print_word::w#7 ← print_word::w#3 -Coalesced (already) [27] print_char_cursor#88 ← print_char_cursor#12 -Coalesced (already) [29] print_char_cursor#84 ← print_char_cursor#12 -Coalesced [33] print_byte::b#11 ← print_byte::b#2 -Coalesced [34] print_char_cursor#76 ← print_char_cursor#12 -Coalesced (already) [36] print_char_cursor#79 ← print_char_cursor#12 -Coalesced [40] print_byte::b#8 ← print_byte::b#3 -Coalesced (already) [41] print_char_cursor#73 ← print_char_cursor#12 -Coalesced (already) [43] print_char_cursor#80 ← print_char_cursor#12 -Coalesced [47] print_byte::b#9 ← print_byte::b#4 -Coalesced (already) [48] print_char_cursor#74 ← print_char_cursor#12 -Coalesced (already) [50] print_char_cursor#81 ← print_char_cursor#12 -Coalesced [54] print_byte::b#10 ← print_byte::b#5 -Coalesced (already) [55] print_char_cursor#75 ← print_char_cursor#12 -Coalesced [62] main::dw#17 ← main::dw#1 -Not coalescing [63] print_char_cursor#72 ← print_line_cursor#1 -Coalesced [64] print_line_cursor#35 ← print_line_cursor#1 -Coalesced [65] print_line_cursor#36 ← print_line_cursor#19 -Coalesced (already) [70] print_line_cursor#37 ← print_line_cursor#1 -Coalesced [74] print_char::ch#9 ← print_char::ch#0 -Coalesced (already) [75] print_char_cursor#85 ← print_char_cursor#67 -Coalesced [79] print_char::ch#10 ← print_char::ch#1 -Coalesced (already) [80] print_char_cursor#86 ← print_char_cursor#12 -Coalesced [89] print_byte::b#12 ← print_byte::b#0 -Coalesced (already) [90] print_char_cursor#77 ← print_char_cursor#65 -Coalesced [93] print_byte::b#13 ← print_byte::b#1 -Coalesced (already) [94] print_char_cursor#78 ← print_char_cursor#12 -Coalesced [98] print_word::w#8 ← print_word::w#0 -Coalesced [99] print_char_cursor#89 ← print_char_cursor#69 -Coalesced [102] print_word::w#9 ← print_word::w#1 -Coalesced (already) [103] print_char_cursor#90 ← print_char_cursor#12 -Coalesced [112] print_cls::sc#3 ← print_cls::sc#1 +Coalesced [15] print_char_cursor#82 ← print_char_cursor#12 +Coalesced [18] print_word::w#6 ← print_word::w#2 +Coalesced [19] print_char_cursor#87 ← print_char_cursor#12 +Coalesced (already) [21] print_char_cursor#83 ← print_char_cursor#12 +Coalesced [24] print_word::w#7 ← print_word::w#3 +Coalesced (already) [25] print_char_cursor#88 ← print_char_cursor#12 +Coalesced (already) [27] print_char_cursor#84 ← print_char_cursor#12 +Coalesced [31] print_byte::b#11 ← print_byte::b#2 +Coalesced [32] print_char_cursor#76 ← print_char_cursor#12 +Coalesced (already) [34] print_char_cursor#79 ← print_char_cursor#12 +Coalesced [38] print_byte::b#8 ← print_byte::b#3 +Coalesced (already) [39] print_char_cursor#73 ← print_char_cursor#12 +Coalesced (already) [41] print_char_cursor#80 ← print_char_cursor#12 +Coalesced [45] print_byte::b#9 ← print_byte::b#4 +Coalesced (already) [46] print_char_cursor#74 ← print_char_cursor#12 +Coalesced (already) [48] print_char_cursor#81 ← print_char_cursor#12 +Coalesced [52] print_byte::b#10 ← print_byte::b#5 +Coalesced (already) [53] print_char_cursor#75 ← print_char_cursor#12 +Coalesced [60] main::dw#17 ← main::dw#1 +Not coalescing [61] print_char_cursor#72 ← print_line_cursor#1 +Coalesced [62] print_line_cursor#35 ← print_line_cursor#1 +Coalesced [63] print_line_cursor#36 ← print_line_cursor#19 +Coalesced (already) [68] print_line_cursor#37 ← print_line_cursor#1 +Coalesced [72] print_char::ch#9 ← print_char::ch#0 +Coalesced (already) [73] print_char_cursor#85 ← print_char_cursor#67 +Coalesced [77] print_char::ch#10 ← print_char::ch#1 +Coalesced (already) [78] print_char_cursor#86 ← print_char_cursor#12 +Coalesced [87] print_byte::b#12 ← print_byte::b#0 +Coalesced (already) [88] print_char_cursor#77 ← print_char_cursor#65 +Coalesced [91] print_byte::b#13 ← print_byte::b#1 +Coalesced (already) [92] print_char_cursor#78 ← print_char_cursor#12 +Coalesced [96] print_word::w#8 ← print_word::w#0 +Coalesced [97] print_char_cursor#89 ← print_char_cursor#69 +Coalesced [100] print_word::w#9 ← print_word::w#1 +Coalesced (already) [101] print_char_cursor#90 ← print_char_cursor#12 +Coalesced [110] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 7 phi equivalence classes Culled Empty Block (label) print_ln::@3 Culled Empty Block (label) print_cls::@3 @@ -815,159 +811,156 @@ main::@1: scope:[main] from main main::@18 [6] (byte*) print_line_cursor#19 ← phi( main::@18/(byte*) print_line_cursor#1 main/((byte*))(word/signed word/dword/signed dword) 1024 ) [6] (byte*) print_char_cursor#69 ← phi( main::@18/(byte*~) print_char_cursor#72 main/((byte*))(word/signed word/dword/signed dword) 1024 ) [6] (dword) main::dw#10 ← phi( main::@18/(dword) main::dw#1 main/(dword/signed dword) 305419896 ) - [7] (word~) main::$1 ← > (dword) main::dw#10 - [8] (word~) main::$2 ← > (dword) main::dw#10 - [9] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 - [10] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 - [11] (word~) main::$4 ← < (dword) main::dw2#1 - [12] (word~) main::$5 ← < (dword) main::dw#10 - [13] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 - [14] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 - [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 - [16] call print_dword + [7] (word~) main::$2 ← > (dword) main::dw#10 + [8] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 + [9] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 + [10] (word~) main::$5 ← < (dword) main::dw#10 + [11] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 + [12] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 + [13] (dword) print_dword::dw#0 ← (dword) main::dw2#10 + [14] call print_dword to:main::@4 main::@4: scope:[main] from main::@1 - [17] phi() - [18] call print_char + [15] phi() + [16] call print_char to:main::@5 main::@5: scope:[main] from main::@4 - [19] (word) print_word::w#2 ← > (dword) main::dw2#10 - [20] call print_word + [17] (word) print_word::w#2 ← > (dword) main::dw2#10 + [18] call print_word to:main::@6 main::@6: scope:[main] from main::@5 - [21] phi() - [22] call print_char + [19] phi() + [20] call print_char to:main::@7 main::@7: scope:[main] from main::@6 - [23] (word) print_word::w#3 ← < (dword) main::dw2#10 - [24] call print_word + [21] (word) print_word::w#3 ← < (dword) main::dw2#10 + [22] call print_word to:main::@8 main::@8: scope:[main] from main::@7 - [25] phi() - [26] call print_char + [23] phi() + [24] call print_char to:main::@9 main::@9: scope:[main] from main::@8 - [27] (word~) main::$15 ← > (dword) main::dw2#10 - [28] (byte) print_byte::b#2 ← > (word~) main::$15 - [29] call print_byte + [25] (word~) main::$15 ← > (dword) main::dw2#10 + [26] (byte) print_byte::b#2 ← > (word~) main::$15 + [27] call print_byte to:main::@10 main::@10: scope:[main] from main::@9 - [30] phi() - [31] call print_char + [28] phi() + [29] call print_char to:main::@11 main::@11: scope:[main] from main::@10 - [32] (word~) main::$19 ← > (dword) main::dw2#10 - [33] (byte) print_byte::b#3 ← < (word~) main::$19 - [34] call print_byte + [30] (word~) main::$19 ← > (dword) main::dw2#10 + [31] (byte) print_byte::b#3 ← < (word~) main::$19 + [32] call print_byte to:main::@12 main::@12: scope:[main] from main::@11 - [35] phi() - [36] call print_char + [33] phi() + [34] call print_char to:main::@13 main::@13: scope:[main] from main::@12 - [37] (word~) main::$23 ← < (dword) main::dw2#10 - [38] (byte) print_byte::b#4 ← > (word~) main::$23 - [39] call print_byte + [35] (word~) main::$23 ← < (dword) main::dw2#10 + [36] (byte) print_byte::b#4 ← > (word~) main::$23 + [37] call print_byte to:main::@14 main::@14: scope:[main] from main::@13 - [40] phi() - [41] call print_char + [38] phi() + [39] call print_char to:main::@15 main::@15: scope:[main] from main::@14 - [42] (word~) main::$27 ← < (dword) main::dw2#10 - [43] (byte) print_byte::b#5 ← < (word~) main::$27 - [44] call print_byte + [40] (word~) main::$27 ← < (dword) main::dw2#10 + [41] (byte) print_byte::b#5 ← < (word~) main::$27 + [42] call print_byte to:main::@16 main::@16: scope:[main] from main::@15 - [45] phi() - [46] call print_ln + [43] phi() + [44] call print_ln to:main::@17 main::@17: scope:[main] from main::@16 - [47] (dword) main::dw#1 ← ++ (dword) main::dw#10 - [48] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 + [45] (dword) main::dw#1 ← ++ (dword) main::dw#10 + [46] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 to:main::@return main::@return: scope:[main] from main::@17 - [49] return + [47] return to:@return main::@18: scope:[main] from main::@17 - [50] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 + [48] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 to:main::@1 print_ln: scope:[print_ln] from main::@16 - [51] phi() + [49] phi() to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - [52] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#19 print_ln::@1/(byte*) print_line_cursor#1 ) - [53] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [54] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 + [50] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#19 print_ln::@1/(byte*) print_line_cursor#1 ) + [51] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [52] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 - [55] return + [53] return to:@return print_byte: scope:[print_byte] from main::@11 main::@13 main::@15 main::@9 print_word print_word::@1 - [56] (byte*) print_char_cursor#67 ← phi( main::@11/(byte*) print_char_cursor#12 main::@13/(byte*) print_char_cursor#12 main::@15/(byte*) print_char_cursor#12 main::@9/(byte*) print_char_cursor#12 print_word/(byte*) print_char_cursor#65 print_word::@1/(byte*) print_char_cursor#12 ) - [56] (byte) print_byte::b#6 ← phi( main::@11/(byte) print_byte::b#3 main::@13/(byte) print_byte::b#4 main::@15/(byte) print_byte::b#5 main::@9/(byte) print_byte::b#2 print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) - [57] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [58] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [59] call print_char + [54] (byte*) print_char_cursor#67 ← phi( main::@11/(byte*) print_char_cursor#12 main::@13/(byte*) print_char_cursor#12 main::@15/(byte*) print_char_cursor#12 main::@9/(byte*) print_char_cursor#12 print_word/(byte*) print_char_cursor#65 print_word::@1/(byte*) print_char_cursor#12 ) + [54] (byte) print_byte::b#6 ← phi( main::@11/(byte) print_byte::b#3 main::@13/(byte) print_byte::b#4 main::@15/(byte) print_byte::b#5 main::@9/(byte) print_byte::b#2 print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) + [55] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [56] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [57] call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - [60] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 - [61] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [62] call print_char + [58] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 + [59] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [60] call print_char to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 - [63] return + [61] return to:@return print_char: scope:[print_char] from main::@10 main::@12 main::@14 main::@4 main::@6 main::@8 print_byte print_byte::@1 - [64] (byte*) print_char_cursor#44 ← phi( main::@10/(byte*) print_char_cursor#12 main::@12/(byte*) print_char_cursor#12 main::@14/(byte*) print_char_cursor#12 main::@4/(byte*) print_char_cursor#12 main::@6/(byte*) print_char_cursor#12 main::@8/(byte*) print_char_cursor#12 print_byte/(byte*) print_char_cursor#67 print_byte::@1/(byte*) print_char_cursor#12 ) - [64] (byte) print_char::ch#8 ← phi( main::@10/(byte) ' ' main::@12/(byte) ' ' main::@14/(byte) ' ' main::@4/(byte) ' ' main::@6/(byte) ' ' main::@8/(byte) ' ' print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) - [65] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 - [66] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 + [62] (byte*) print_char_cursor#44 ← phi( main::@10/(byte*) print_char_cursor#12 main::@12/(byte*) print_char_cursor#12 main::@14/(byte*) print_char_cursor#12 main::@4/(byte*) print_char_cursor#12 main::@6/(byte*) print_char_cursor#12 main::@8/(byte*) print_char_cursor#12 print_byte/(byte*) print_char_cursor#67 print_byte::@1/(byte*) print_char_cursor#12 ) + [62] (byte) print_char::ch#8 ← phi( main::@10/(byte) ' ' main::@12/(byte) ' ' main::@14/(byte) ' ' main::@4/(byte) ' ' main::@6/(byte) ' ' main::@8/(byte) ' ' print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) + [63] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 + [64] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [67] return + [65] return to:@return print_word: scope:[print_word] from main::@5 main::@7 print_dword print_dword::@1 - [68] (byte*) print_char_cursor#65 ← phi( main::@5/(byte*) print_char_cursor#12 main::@7/(byte*) print_char_cursor#12 print_dword/(byte*) print_char_cursor#69 print_dword::@1/(byte*) print_char_cursor#12 ) - [68] (word) print_word::w#4 ← phi( main::@5/(word) print_word::w#2 main::@7/(word) print_word::w#3 print_dword/(word) print_word::w#0 print_dword::@1/(word) print_word::w#1 ) - [69] (byte) print_byte::b#0 ← > (word) print_word::w#4 - [70] call print_byte + [66] (byte*) print_char_cursor#65 ← phi( main::@5/(byte*) print_char_cursor#12 main::@7/(byte*) print_char_cursor#12 print_dword/(byte*) print_char_cursor#69 print_dword::@1/(byte*) print_char_cursor#12 ) + [66] (word) print_word::w#4 ← phi( main::@5/(word) print_word::w#2 main::@7/(word) print_word::w#3 print_dword/(word) print_word::w#0 print_dword::@1/(word) print_word::w#1 ) + [67] (byte) print_byte::b#0 ← > (word) print_word::w#4 + [68] call print_byte to:print_word::@1 print_word::@1: scope:[print_word] from print_word - [71] (byte) print_byte::b#1 ← < (word) print_word::w#4 - [72] call print_byte + [69] (byte) print_byte::b#1 ← < (word) print_word::w#4 + [70] call print_byte to:print_word::@return print_word::@return: scope:[print_word] from print_word::@1 - [73] return + [71] return to:@return print_dword: scope:[print_dword] from main::@1 - [74] (word) print_word::w#0 ← > (dword) print_dword::dw#0 - [75] call print_word + [72] (word) print_word::w#0 ← > (dword) print_dword::dw#0 + [73] call print_word to:print_dword::@1 print_dword::@1: scope:[print_dword] from print_dword - [76] (word) print_word::w#1 ← < (dword) print_dword::dw#0 - [77] call print_word + [74] (word) print_word::w#1 ← < (dword) print_dword::dw#0 + [75] call print_word to:print_dword::@return print_dword::@return: scope:[print_dword] from print_dword::@1 - [78] return + [76] return to:@return print_cls: scope:[print_cls] from main - [79] phi() + [77] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [80] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [81] *((byte*) print_cls::sc#2) ← (byte) ' ' - [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [83] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 + [78] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [79] *((byte*) print_cls::sc#2) ← (byte) ' ' + [80] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [81] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [84] return + [82] return to:@return VARIABLE REGISTER WEIGHTS (void()) main() -(word~) main::$1 110.0 (word~) main::$15 22.0 (word~) main::$19 22.0 (word~) main::$2 22.0 @@ -975,13 +968,12 @@ VARIABLE REGISTER WEIGHTS (word~) main::$27 22.0 (word/signed dword/dword~) main::$32 22.0 (word/signed dword/dword~) main::$33 22.0 -(word~) main::$4 110.0 (word~) main::$5 22.0 (dword) main::dw (dword) main::dw#1 11.0 -(dword) main::dw#10 1.6097560975609757 +(dword) main::dw#10 1.4102564102564101 (dword) main::dw2 -(dword) main::dw2#1 8.25 +(dword) main::dw2#1 7.333333333333333 (dword) main::dw2#10 3.142857142857143 (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 4.0 @@ -1004,7 +996,7 @@ VARIABLE REGISTER WEIGHTS (byte*) print_char_cursor#44 37.0 (byte*) print_char_cursor#65 14.0 (byte*) print_char_cursor#67 16.666666666666664 -(byte*) print_char_cursor#69 1.1818181818181819 +(byte*) print_char_cursor#69 1.4444444444444446 (byte*~) print_char_cursor#72 22.0 (void()) print_cls() (byte*) print_cls::sc @@ -1016,7 +1008,7 @@ VARIABLE REGISTER WEIGHTS (byte[]) print_hextab (byte*) print_line_cursor (byte*) print_line_cursor#1 46.42857142857143 -(byte*) print_line_cursor#19 0.3170731707317073 +(byte*) print_line_cursor#19 0.3333333333333333 (byte*) print_line_cursor#9 204.0 (void()) print_ln() (byte*) print_screen @@ -1036,11 +1028,9 @@ Initial phi equivalence classes [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] [ print_cls::sc#2 print_cls::sc#1 ] -Added variable main::$1 to zero page equivalence class [ main::$1 ] Added variable main::$2 to zero page equivalence class [ main::$2 ] Added variable main::$32 to zero page equivalence class [ main::$32 ] Added variable main::dw2#1 to zero page equivalence class [ main::dw2#1 ] -Added variable main::$4 to zero page equivalence class [ main::$4 ] Added variable main::$5 to zero page equivalence class [ main::$5 ] Added variable main::$33 to zero page equivalence class [ main::$33 ] Added variable main::dw2#10 to zero page equivalence class [ main::dw2#10 ] @@ -1059,11 +1049,9 @@ Complete equivalence classes [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] [ print_cls::sc#2 print_cls::sc#1 ] -[ main::$1 ] [ main::$2 ] [ main::$32 ] [ main::dw2#1 ] -[ main::$4 ] [ main::$5 ] [ main::$33 ] [ main::dw2#10 ] @@ -1081,21 +1069,19 @@ Allocated zp ZP_BYTE:9 [ print_char::ch#8 print_char::ch#0 print_char::ch#1 ] Allocated zp ZP_WORD:10 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] Allocated zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] Allocated zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] -Allocated zp ZP_WORD:16 [ main::$1 ] -Allocated zp ZP_WORD:18 [ main::$2 ] -Allocated zp ZP_WORD:20 [ main::$32 ] -Allocated zp ZP_DWORD:22 [ main::dw2#1 ] -Allocated zp ZP_WORD:26 [ main::$4 ] -Allocated zp ZP_WORD:28 [ main::$5 ] -Allocated zp ZP_WORD:30 [ main::$33 ] -Allocated zp ZP_DWORD:32 [ main::dw2#10 ] -Allocated zp ZP_DWORD:36 [ print_dword::dw#0 ] -Allocated zp ZP_WORD:40 [ main::$15 ] -Allocated zp ZP_WORD:42 [ main::$19 ] -Allocated zp ZP_WORD:44 [ main::$23 ] -Allocated zp ZP_WORD:46 [ main::$27 ] -Allocated zp ZP_BYTE:48 [ print_byte::$0 ] -Allocated zp ZP_BYTE:49 [ print_byte::$2 ] +Allocated zp ZP_WORD:16 [ main::$2 ] +Allocated zp ZP_WORD:18 [ main::$32 ] +Allocated zp ZP_DWORD:20 [ main::dw2#1 ] +Allocated zp ZP_WORD:24 [ main::$5 ] +Allocated zp ZP_WORD:26 [ main::$33 ] +Allocated zp ZP_DWORD:28 [ main::dw2#10 ] +Allocated zp ZP_DWORD:32 [ print_dword::dw#0 ] +Allocated zp ZP_WORD:36 [ main::$15 ] +Allocated zp ZP_WORD:38 [ main::$19 ] +Allocated zp ZP_WORD:40 [ main::$23 ] +Allocated zp ZP_WORD:42 [ main::$27 ] +Allocated zp ZP_BYTE:44 [ print_byte::$0 ] +Allocated zp ZP_BYTE:45 [ print_byte::$2 ] INITIAL ASM //SEG0 File Comments @@ -1124,21 +1110,19 @@ bend_from_b20: bend: //SEG10 main main: { - .label _1 = $10 - .label _2 = $12 - .label _4 = $1a - .label _5 = $1c - .label _15 = $28 - .label _19 = $2a - .label _23 = $2c - .label _27 = $2e - .label _32 = $14 - .label _33 = $1e - .label dw2 = $16 + .label _2 = $10 + .label _5 = $18 + .label _15 = $24 + .label _19 = $26 + .label _23 = $28 + .label _27 = $2a + .label _32 = $12 + .label _33 = $1a + .label dw2 = $14 .label dw = 2 - .label dw2_10 = $20 + .label dw2_10 = $1c //SEG11 [5] call print_cls - //SEG12 [79] phi from main to print_cls [phi:main->print_cls] + //SEG12 [77] 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] @@ -1165,17 +1149,12 @@ main: { jmp b1 //SEG17 main::@1 b1: - //SEG18 [7] (word~) main::$1 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 - lda dw+2 - sta _1 - lda dw+3 - sta _1+1 - //SEG19 [8] (word~) main::$2 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 + //SEG18 [7] (word~) main::$2 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 lda dw+2 sta _2 lda dw+3 sta _2+1 - //SEG20 [9] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz2_plus_vwuc1 + //SEG19 [8] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz2_plus_vwuc1 lda _2 clc adc #<$1111 @@ -1183,7 +1162,7 @@ main: { lda _2+1 adc #>$1111 sta _32+1 - //SEG21 [10] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 -- vduz1=vduz2_sethi_vwuz3 + //SEG20 [9] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 -- vduz1=vduz2_sethi_vwuz3 lda dw sta dw2 lda dw+1 @@ -1192,18 +1171,12 @@ main: { sta dw2+2 lda _32+1 sta dw2+3 - //SEG22 [11] (word~) main::$4 ← < (dword) main::dw2#1 -- vwuz1=_lo_vduz2 - // Test set/get high word of dword - lda dw2 - sta _4 - lda dw2+1 - sta _4+1 - //SEG23 [12] (word~) main::$5 ← < (dword) main::dw#10 -- vwuz1=_lo_vduz2 + //SEG21 [10] (word~) main::$5 ← < (dword) main::dw#10 -- vwuz1=_lo_vduz2 lda dw sta _5 lda dw+1 sta _5+1 - //SEG24 [13] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz2_plus_vwuc1 + //SEG22 [11] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz2_plus_vwuc1 lda _5 clc adc #<$1111 @@ -1211,7 +1184,7 @@ main: { lda _5+1 adc #>$1111 sta _33+1 - //SEG25 [14] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 -- vduz1=vduz2_setlo_vwuz3 + //SEG23 [12] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 -- vduz1=vduz2_setlo_vwuz3 lda _33 sta dw2_10 lda _33+1 @@ -1220,7 +1193,7 @@ main: { sta dw2_10+2 lda dw2+3 sta dw2_10+3 - //SEG26 [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 -- vduz1=vduz2 + //SEG24 [13] (dword) print_dword::dw#0 ← (dword) main::dw2#10 -- vduz1=vduz2 lda dw2_10 sta print_dword.dw lda dw2_10+1 @@ -1229,195 +1202,195 @@ main: { sta print_dword.dw+2 lda dw2_10+3 sta print_dword.dw+3 - //SEG27 [16] call print_dword + //SEG25 [14] call print_dword jsr print_dword - //SEG28 [17] phi from main::@1 to main::@4 [phi:main::@1->main::@4] + //SEG26 [15] phi from main::@1 to main::@4 [phi:main::@1->main::@4] b4_from_b1: jmp b4 - //SEG29 main::@4 + //SEG27 main::@4 b4: - //SEG30 [18] call print_char - //SEG31 [64] phi from main::@4 to print_char [phi:main::@4->print_char] + //SEG28 [16] call print_char + //SEG29 [62] phi from main::@4 to print_char [phi:main::@4->print_char] print_char_from_b4: - //SEG32 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@4->print_char#0] -- register_copy - //SEG33 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@4->print_char#1] -- vbuz1=vbuc1 + //SEG30 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@4->print_char#0] -- register_copy + //SEG31 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@4->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char jmp b5 - //SEG34 main::@5 + //SEG32 main::@5 b5: - //SEG35 [19] (word) print_word::w#2 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG33 [17] (word) print_word::w#2 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2_10+2 sta print_word.w lda dw2_10+3 sta print_word.w+1 - //SEG36 [20] call print_word - //SEG37 [68] phi from main::@5 to print_word [phi:main::@5->print_word] + //SEG34 [18] call print_word + //SEG35 [66] phi from main::@5 to print_word [phi:main::@5->print_word] print_word_from_b5: - //SEG38 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@5->print_word#0] -- register_copy - //SEG39 [68] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:main::@5->print_word#1] -- register_copy + //SEG36 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@5->print_word#0] -- register_copy + //SEG37 [66] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:main::@5->print_word#1] -- register_copy jsr print_word - //SEG40 [21] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG38 [19] phi from main::@5 to main::@6 [phi:main::@5->main::@6] b6_from_b5: jmp b6 - //SEG41 main::@6 + //SEG39 main::@6 b6: - //SEG42 [22] call print_char - //SEG43 [64] phi from main::@6 to print_char [phi:main::@6->print_char] + //SEG40 [20] call print_char + //SEG41 [62] phi from main::@6 to print_char [phi:main::@6->print_char] print_char_from_b6: - //SEG44 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@6->print_char#0] -- register_copy - //SEG45 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@6->print_char#1] -- vbuz1=vbuc1 + //SEG42 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@6->print_char#0] -- register_copy + //SEG43 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@6->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char jmp b7 - //SEG46 main::@7 + //SEG44 main::@7 b7: - //SEG47 [23] (word) print_word::w#3 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG45 [21] (word) print_word::w#3 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2_10 sta print_word.w lda dw2_10+1 sta print_word.w+1 - //SEG48 [24] call print_word - //SEG49 [68] phi from main::@7 to print_word [phi:main::@7->print_word] + //SEG46 [22] call print_word + //SEG47 [66] phi from main::@7 to print_word [phi:main::@7->print_word] print_word_from_b7: - //SEG50 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@7->print_word#0] -- register_copy - //SEG51 [68] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:main::@7->print_word#1] -- register_copy + //SEG48 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@7->print_word#0] -- register_copy + //SEG49 [66] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:main::@7->print_word#1] -- register_copy jsr print_word - //SEG52 [25] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + //SEG50 [23] phi from main::@7 to main::@8 [phi:main::@7->main::@8] b8_from_b7: jmp b8 - //SEG53 main::@8 + //SEG51 main::@8 b8: - //SEG54 [26] call print_char - //SEG55 [64] phi from main::@8 to print_char [phi:main::@8->print_char] + //SEG52 [24] call print_char + //SEG53 [62] phi from main::@8 to print_char [phi:main::@8->print_char] print_char_from_b8: - //SEG56 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@8->print_char#0] -- register_copy - //SEG57 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@8->print_char#1] -- vbuz1=vbuc1 + //SEG54 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@8->print_char#0] -- register_copy + //SEG55 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@8->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char jmp b9 - //SEG58 main::@9 + //SEG56 main::@9 b9: - //SEG59 [27] (word~) main::$15 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG57 [25] (word~) main::$15 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2_10+2 sta _15 lda dw2_10+3 sta _15+1 - //SEG60 [28] (byte) print_byte::b#2 ← > (word~) main::$15 -- vbuz1=_hi_vwuz2 + //SEG58 [26] (byte) print_byte::b#2 ← > (word~) main::$15 -- vbuz1=_hi_vwuz2 lda _15+1 sta print_byte.b - //SEG61 [29] call print_byte - //SEG62 [56] phi from main::@9 to print_byte [phi:main::@9->print_byte] + //SEG59 [27] call print_byte + //SEG60 [54] phi from main::@9 to print_byte [phi:main::@9->print_byte] print_byte_from_b9: - //SEG63 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@9->print_byte#0] -- register_copy - //SEG64 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#2 [phi:main::@9->print_byte#1] -- register_copy + //SEG61 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@9->print_byte#0] -- register_copy + //SEG62 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#2 [phi:main::@9->print_byte#1] -- register_copy jsr print_byte - //SEG65 [30] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG63 [28] phi from main::@9 to main::@10 [phi:main::@9->main::@10] b10_from_b9: jmp b10 - //SEG66 main::@10 + //SEG64 main::@10 b10: - //SEG67 [31] call print_char - //SEG68 [64] phi from main::@10 to print_char [phi:main::@10->print_char] + //SEG65 [29] call print_char + //SEG66 [62] phi from main::@10 to print_char [phi:main::@10->print_char] print_char_from_b10: - //SEG69 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@10->print_char#0] -- register_copy - //SEG70 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@10->print_char#1] -- vbuz1=vbuc1 + //SEG67 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@10->print_char#0] -- register_copy + //SEG68 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@10->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char jmp b11 - //SEG71 main::@11 + //SEG69 main::@11 b11: - //SEG72 [32] (word~) main::$19 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG70 [30] (word~) main::$19 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2_10+2 sta _19 lda dw2_10+3 sta _19+1 - //SEG73 [33] (byte) print_byte::b#3 ← < (word~) main::$19 -- vbuz1=_lo_vwuz2 + //SEG71 [31] (byte) print_byte::b#3 ← < (word~) main::$19 -- vbuz1=_lo_vwuz2 lda _19 sta print_byte.b - //SEG74 [34] call print_byte - //SEG75 [56] phi from main::@11 to print_byte [phi:main::@11->print_byte] + //SEG72 [32] call print_byte + //SEG73 [54] phi from main::@11 to print_byte [phi:main::@11->print_byte] print_byte_from_b11: - //SEG76 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@11->print_byte#0] -- register_copy - //SEG77 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#3 [phi:main::@11->print_byte#1] -- register_copy + //SEG74 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@11->print_byte#0] -- register_copy + //SEG75 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#3 [phi:main::@11->print_byte#1] -- register_copy jsr print_byte - //SEG78 [35] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + //SEG76 [33] phi from main::@11 to main::@12 [phi:main::@11->main::@12] b12_from_b11: jmp b12 - //SEG79 main::@12 + //SEG77 main::@12 b12: - //SEG80 [36] call print_char - //SEG81 [64] phi from main::@12 to print_char [phi:main::@12->print_char] + //SEG78 [34] call print_char + //SEG79 [62] phi from main::@12 to print_char [phi:main::@12->print_char] print_char_from_b12: - //SEG82 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@12->print_char#0] -- register_copy - //SEG83 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@12->print_char#1] -- vbuz1=vbuc1 + //SEG80 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@12->print_char#0] -- register_copy + //SEG81 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@12->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char jmp b13 - //SEG84 main::@13 + //SEG82 main::@13 b13: - //SEG85 [37] (word~) main::$23 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG83 [35] (word~) main::$23 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2_10 sta _23 lda dw2_10+1 sta _23+1 - //SEG86 [38] (byte) print_byte::b#4 ← > (word~) main::$23 -- vbuz1=_hi_vwuz2 + //SEG84 [36] (byte) print_byte::b#4 ← > (word~) main::$23 -- vbuz1=_hi_vwuz2 lda _23+1 sta print_byte.b - //SEG87 [39] call print_byte - //SEG88 [56] phi from main::@13 to print_byte [phi:main::@13->print_byte] + //SEG85 [37] call print_byte + //SEG86 [54] phi from main::@13 to print_byte [phi:main::@13->print_byte] print_byte_from_b13: - //SEG89 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@13->print_byte#0] -- register_copy - //SEG90 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#4 [phi:main::@13->print_byte#1] -- register_copy + //SEG87 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@13->print_byte#0] -- register_copy + //SEG88 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#4 [phi:main::@13->print_byte#1] -- register_copy jsr print_byte - //SEG91 [40] phi from main::@13 to main::@14 [phi:main::@13->main::@14] + //SEG89 [38] phi from main::@13 to main::@14 [phi:main::@13->main::@14] b14_from_b13: jmp b14 - //SEG92 main::@14 + //SEG90 main::@14 b14: - //SEG93 [41] call print_char - //SEG94 [64] phi from main::@14 to print_char [phi:main::@14->print_char] + //SEG91 [39] call print_char + //SEG92 [62] phi from main::@14 to print_char [phi:main::@14->print_char] print_char_from_b14: - //SEG95 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@14->print_char#0] -- register_copy - //SEG96 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@14->print_char#1] -- vbuz1=vbuc1 + //SEG93 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@14->print_char#0] -- register_copy + //SEG94 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@14->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char jmp b15 - //SEG97 main::@15 + //SEG95 main::@15 b15: - //SEG98 [42] (word~) main::$27 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG96 [40] (word~) main::$27 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2_10 sta _27 lda dw2_10+1 sta _27+1 - //SEG99 [43] (byte) print_byte::b#5 ← < (word~) main::$27 -- vbuz1=_lo_vwuz2 + //SEG97 [41] (byte) print_byte::b#5 ← < (word~) main::$27 -- vbuz1=_lo_vwuz2 lda _27 sta print_byte.b - //SEG100 [44] call print_byte - //SEG101 [56] phi from main::@15 to print_byte [phi:main::@15->print_byte] + //SEG98 [42] call print_byte + //SEG99 [54] phi from main::@15 to print_byte [phi:main::@15->print_byte] print_byte_from_b15: - //SEG102 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@15->print_byte#0] -- register_copy - //SEG103 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#5 [phi:main::@15->print_byte#1] -- register_copy + //SEG100 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@15->print_byte#0] -- register_copy + //SEG101 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#5 [phi:main::@15->print_byte#1] -- register_copy jsr print_byte - //SEG104 [45] phi from main::@15 to main::@16 [phi:main::@15->main::@16] + //SEG102 [43] phi from main::@15 to main::@16 [phi:main::@15->main::@16] b16_from_b15: jmp b16 - //SEG105 main::@16 + //SEG103 main::@16 b16: - //SEG106 [46] call print_ln - //SEG107 [51] phi from main::@16 to print_ln [phi:main::@16->print_ln] + //SEG104 [44] call print_ln + //SEG105 [49] phi from main::@16 to print_ln [phi:main::@16->print_ln] print_ln_from_b16: jsr print_ln jmp b17 - //SEG108 main::@17 + //SEG106 main::@17 b17: - //SEG109 [47] (dword) main::dw#1 ← ++ (dword) main::dw#10 -- vduz1=_inc_vduz1 + //SEG107 [45] (dword) main::dw#1 ← ++ (dword) main::dw#10 -- vduz1=_inc_vduz1 inc dw bne !+ inc dw+1 @@ -1426,7 +1399,7 @@ main: { bne !+ inc dw+3 !: - //SEG110 [48] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 -- vduz1_neq_vduc1_then_la1 + //SEG108 [46] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 -- vduz1_neq_vduc1_then_la1 lda dw+3 cmp #>$12345690>>$10 bne b18 @@ -1440,35 +1413,35 @@ main: { cmp #<$12345690 bne b18 jmp breturn - //SEG111 main::@return + //SEG109 main::@return breturn: - //SEG112 [49] return + //SEG110 [47] return rts - //SEG113 main::@18 + //SEG111 main::@18 b18: - //SEG114 [50] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG112 [48] (byte*~) print_char_cursor#72 ← (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 - //SEG115 [6] phi from main::@18 to main::@1 [phi:main::@18->main::@1] + //SEG113 [6] phi from main::@18 to main::@1 [phi:main::@18->main::@1] b1_from_b18: - //SEG116 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@18->main::@1#0] -- register_copy - //SEG117 [6] phi (byte*) print_char_cursor#69 = (byte*~) print_char_cursor#72 [phi:main::@18->main::@1#1] -- register_copy - //SEG118 [6] phi (dword) main::dw#10 = (dword) main::dw#1 [phi:main::@18->main::@1#2] -- register_copy + //SEG114 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@18->main::@1#0] -- register_copy + //SEG115 [6] phi (byte*) print_char_cursor#69 = (byte*~) print_char_cursor#72 [phi:main::@18->main::@1#1] -- register_copy + //SEG116 [6] phi (dword) main::dw#10 = (dword) main::dw#1 [phi:main::@18->main::@1#2] -- register_copy jmp b1 } -//SEG119 print_ln +//SEG117 print_ln // Print a newline print_ln: { - //SEG120 [52] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG118 [50] 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: - //SEG121 [52] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG119 [50] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG122 print_ln::@1 + //SEG120 print_ln::@1 b1: - //SEG123 [53] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG121 [51] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -1476,7 +1449,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG124 [54] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG122 [52] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -1486,174 +1459,174 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG125 print_ln::@return + //SEG123 print_ln::@return breturn: - //SEG126 [55] return + //SEG124 [53] return rts } -//SEG127 print_byte +//SEG125 print_byte // Print a byte as HEX // print_byte(byte zeropage(8) b) print_byte: { - .label _0 = $30 - .label _2 = $31 + .label _0 = $2c + .label _2 = $2d .label b = 8 - //SEG128 [57] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG126 [55] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG129 [58] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG127 [56] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch - //SEG130 [59] call print_char - //SEG131 [64] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG128 [57] call print_char + //SEG129 [62] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG132 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#67 [phi:print_byte->print_char#0] -- register_copy - //SEG133 [64] phi (byte) print_char::ch#8 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG130 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#67 [phi:print_byte->print_char#0] -- register_copy + //SEG131 [62] phi (byte) print_char::ch#8 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG134 print_byte::@1 + //SEG132 print_byte::@1 b1: - //SEG135 [60] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG133 [58] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG136 [61] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG134 [59] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch - //SEG137 [62] call print_char - //SEG138 [64] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG135 [60] call print_char + //SEG136 [62] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG139 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG140 [64] phi (byte) print_char::ch#8 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG137 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG138 [62] phi (byte) print_char::ch#8 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG141 print_byte::@return + //SEG139 print_byte::@return breturn: - //SEG142 [63] return + //SEG140 [61] return rts } -//SEG143 print_char +//SEG141 print_char // Print a single char // print_char(byte zeropage(9) ch) print_char: { .label ch = 9 - //SEG144 [65] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 -- _deref_pbuz1=vbuz2 + //SEG142 [63] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG145 [66] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 -- pbuz1=_inc_pbuz1 + //SEG143 [64] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG146 print_char::@return + //SEG144 print_char::@return breturn: - //SEG147 [67] return + //SEG145 [65] return rts } -//SEG148 print_word +//SEG146 print_word // Print a word as HEX // print_word(word zeropage($c) w) print_word: { .label w = $c - //SEG149 [69] (byte) print_byte::b#0 ← > (word) print_word::w#4 -- vbuz1=_hi_vwuz2 + //SEG147 [67] (byte) print_byte::b#0 ← > (word) print_word::w#4 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG150 [70] call print_byte - //SEG151 [56] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG148 [68] call print_byte + //SEG149 [54] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG152 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#65 [phi:print_word->print_byte#0] -- register_copy - //SEG153 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG150 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#65 [phi:print_word->print_byte#0] -- register_copy + //SEG151 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG154 print_word::@1 + //SEG152 print_word::@1 b1: - //SEG155 [71] (byte) print_byte::b#1 ← < (word) print_word::w#4 -- vbuz1=_lo_vwuz2 + //SEG153 [69] (byte) print_byte::b#1 ← < (word) print_word::w#4 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG156 [72] call print_byte - //SEG157 [56] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG154 [70] call print_byte + //SEG155 [54] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG158 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG159 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG156 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG157 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG160 print_word::@return + //SEG158 print_word::@return breturn: - //SEG161 [73] return + //SEG159 [71] return rts } -//SEG162 print_dword +//SEG160 print_dword // Print a dword as HEX -// print_dword(dword zeropage($24) dw) +// print_dword(dword zeropage($20) dw) print_dword: { - .label dw = $24 - //SEG163 [74] (word) print_word::w#0 ← > (dword) print_dword::dw#0 -- vwuz1=_hi_vduz2 + .label dw = $20 + //SEG161 [72] (word) print_word::w#0 ← > (dword) print_dword::dw#0 -- vwuz1=_hi_vduz2 lda dw+2 sta print_word.w lda dw+3 sta print_word.w+1 - //SEG164 [75] call print_word - //SEG165 [68] phi from print_dword to print_word [phi:print_dword->print_word] + //SEG162 [73] call print_word + //SEG163 [66] phi from print_dword to print_word [phi:print_dword->print_word] print_word_from_print_dword: - //SEG166 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#69 [phi:print_dword->print_word#0] -- register_copy - //SEG167 [68] phi (word) print_word::w#4 = (word) print_word::w#0 [phi:print_dword->print_word#1] -- register_copy + //SEG164 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#69 [phi:print_dword->print_word#0] -- register_copy + //SEG165 [66] phi (word) print_word::w#4 = (word) print_word::w#0 [phi:print_dword->print_word#1] -- register_copy jsr print_word jmp b1 - //SEG168 print_dword::@1 + //SEG166 print_dword::@1 b1: - //SEG169 [76] (word) print_word::w#1 ← < (dword) print_dword::dw#0 -- vwuz1=_lo_vduz2 + //SEG167 [74] (word) print_word::w#1 ← < (dword) print_dword::dw#0 -- vwuz1=_lo_vduz2 lda dw sta print_word.w lda dw+1 sta print_word.w+1 - //SEG170 [77] call print_word - //SEG171 [68] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] + //SEG168 [75] call print_word + //SEG169 [66] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] print_word_from_b1: - //SEG172 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:print_dword::@1->print_word#0] -- register_copy - //SEG173 [68] phi (word) print_word::w#4 = (word) print_word::w#1 [phi:print_dword::@1->print_word#1] -- register_copy + //SEG170 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:print_dword::@1->print_word#0] -- register_copy + //SEG171 [66] phi (word) print_word::w#4 = (word) print_word::w#1 [phi:print_dword::@1->print_word#1] -- register_copy jsr print_word jmp breturn - //SEG174 print_dword::@return + //SEG172 print_dword::@return breturn: - //SEG175 [78] return + //SEG173 [76] return rts } -//SEG176 print_cls +//SEG174 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $e - //SEG177 [80] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG175 [78] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG178 [80] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG176 [78] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG179 [80] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG177 [78] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG180 [80] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG178 [78] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG181 print_cls::@1 + //SEG179 print_cls::@1 b1: - //SEG182 [81] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG180 [79] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG183 [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG181 [80] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG184 [83] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG182 [81] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -1661,78 +1634,74 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG185 print_cls::@return + //SEG183 print_cls::@return breturn: - //SEG186 [84] return + //SEG184 [82] return rts } print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS -Equivalence Class zp ZP_WORD:18 [ main::$2 ] has ALU potential. -Equivalence Class zp ZP_WORD:28 [ main::$5 ] has ALU potential. -Statement [7] (word~) main::$1 ← > (dword) main::dw#10 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 ] ) always clobbers reg byte a -Statement [9] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::$32 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::$32 ] ) always clobbers reg byte a -Statement [10] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ) always clobbers reg byte a -Statement [11] (word~) main::$4 ← < (dword) main::dw2#1 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ) always clobbers reg byte a -Statement [13] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 main::$33 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 main::$33 ] ) always clobbers reg byte a -Statement [14] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 ] ) always clobbers reg byte a -Statement [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 print_dword::dw#0 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 print_dword::dw#0 ] ) always clobbers reg byte a -Statement [19] (word) print_word::w#2 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#2 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#2 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [23] (word) print_word::w#3 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#3 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#3 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [27] (word~) main::$15 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$15 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$15 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [28] (byte) print_byte::b#2 ← > (word~) main::$15 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#2 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#2 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [32] (word~) main::$19 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$19 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$19 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [33] (byte) print_byte::b#3 ← < (word~) main::$19 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#3 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#3 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [37] (word~) main::$23 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$23 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$23 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [38] (byte) print_byte::b#4 ← > (word~) main::$23 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#4 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#4 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [42] (word~) main::$27 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::$27 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::$27 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [43] (byte) print_byte::b#5 ← < (word~) main::$27 [ main::dw#10 print_line_cursor#19 print_byte::b#5 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 print_byte::b#5 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [48] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 [ main::dw#1 print_line_cursor#1 ] ( main:2 [ main::dw#1 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [50] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 [ main::dw#1 print_char_cursor#72 print_line_cursor#1 ] ( main:2 [ main::dw#1 print_char_cursor#72 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [53] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:46 [ main::dw#10 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [54] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:46 [ main::dw#10 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [57] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ( main:2::print_byte:29 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:34 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:39 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:44 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:20::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:24::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:16::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:16::print_word:77::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:20::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:24::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:16::print_word:75::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:16::print_word:77::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ) always clobbers reg byte a +Equivalence Class zp ZP_WORD:16 [ main::$2 ] has ALU potential. +Equivalence Class zp ZP_WORD:24 [ main::$5 ] has ALU potential. +Statement [8] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::$32 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::$32 ] ) always clobbers reg byte a +Statement [9] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ) always clobbers reg byte a +Statement [11] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 main::$33 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 main::$33 ] ) always clobbers reg byte a +Statement [12] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 ] ) always clobbers reg byte a +Statement [13] (dword) print_dword::dw#0 ← (dword) main::dw2#10 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 print_dword::dw#0 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 print_dword::dw#0 ] ) always clobbers reg byte a +Statement [17] (word) print_word::w#2 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#2 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#2 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [21] (word) print_word::w#3 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#3 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#3 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [25] (word~) main::$15 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$15 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$15 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [26] (byte) print_byte::b#2 ← > (word~) main::$15 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#2 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#2 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [30] (word~) main::$19 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$19 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$19 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [31] (byte) print_byte::b#3 ← < (word~) main::$19 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#3 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#3 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [35] (word~) main::$23 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$23 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$23 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [36] (byte) print_byte::b#4 ← > (word~) main::$23 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#4 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#4 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [40] (word~) main::$27 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::$27 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::$27 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [41] (byte) print_byte::b#5 ← < (word~) main::$27 [ main::dw#10 print_line_cursor#19 print_byte::b#5 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 print_byte::b#5 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [46] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 [ main::dw#1 print_line_cursor#1 ] ( main:2 [ main::dw#1 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [48] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 [ main::dw#1 print_char_cursor#72 print_line_cursor#1 ] ( main:2 [ main::dw#1 print_char_cursor#72 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [51] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:44 [ main::dw#10 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [52] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:44 [ main::dw#10 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [55] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [60] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_byte:29 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:34 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:39 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:44 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_byte::$2 ] main:2::print_word:20::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:24::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:16::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:16::print_word:77::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:20::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_word:24::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:16::print_word:75::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:16::print_word:77::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a -Statement [65] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 [ print_char_cursor#44 ] ( main:2::print_char:18 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:22 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:26 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:31 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:36 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:41 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:29::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:34::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:39::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:44::print_char:59 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:20::print_byte:70::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:24::print_byte:70::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:16::print_word:75::print_byte:70::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:16::print_word:77::print_byte:70::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:20::print_byte:72::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:24::print_byte:72::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:16::print_word:75::print_byte:72::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:16::print_word:77::print_byte:72::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:29::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:34::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:39::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:44::print_char:62 [ main::dw#10 print_line_cursor#19 print_char_cursor#44 ] main:2::print_word:20::print_byte:70::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:24::print_byte:70::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_dword:16::print_word:75::print_byte:70::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#44 ] main:2::print_dword:16::print_word:77::print_byte:70::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:20::print_byte:72::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_word:24::print_byte:72::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_dword:16::print_word:75::print_byte:72::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#44 ] main:2::print_dword:16::print_word:77::print_byte:72::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] ) always clobbers reg byte y +Statement [58] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_byte::$2 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a +Statement [63] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 [ print_char_cursor#44 ] ( main:2::print_char:16 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:20 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:24 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:29 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:34 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:39 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:27::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:32::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:37::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:42::print_char:57 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:18::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:22::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:18::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:22::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:27::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:32::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:37::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:42::print_char:60 [ main::dw#10 print_line_cursor#19 print_char_cursor#44 ] main:2::print_word:18::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:22::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:18::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_word:22::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:8 [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [69] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ print_byte::b#0 print_char_cursor#65 print_word::w#4 ] ( main:2::print_word:20 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_word:24 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_dword:16::print_word:75 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_dword:16::print_word:77 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] ) always clobbers reg byte a -Statement [71] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ print_char_cursor#12 print_byte::b#1 ] ( main:2::print_word:20 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] main:2::print_word:24 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] main:2::print_dword:16::print_word:75 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::b#1 ] main:2::print_dword:16::print_word:77 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a -Statement [74] (word) print_word::w#0 ← > (dword) print_dword::dw#0 [ print_char_cursor#69 print_dword::dw#0 print_word::w#0 ] ( main:2::print_dword:16 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#69 print_dword::dw#0 print_word::w#0 ] ) always clobbers reg byte a -Statement [76] (word) print_word::w#1 ← < (dword) print_dword::dw#0 [ print_char_cursor#12 print_word::w#1 ] ( main:2::print_dword:16 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_word::w#1 ] ) always clobbers reg byte a -Statement [81] *((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 [83] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [7] (word~) main::$1 ← > (dword) main::dw#10 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 ] ) always clobbers reg byte a -Statement [9] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::$32 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::$32 ] ) always clobbers reg byte a -Statement [10] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ) always clobbers reg byte a -Statement [11] (word~) main::$4 ← < (dword) main::dw2#1 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ) always clobbers reg byte a -Statement [13] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 main::$33 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 main::$33 ] ) always clobbers reg byte a -Statement [14] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 ] ) always clobbers reg byte a -Statement [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 print_dword::dw#0 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 print_dword::dw#0 ] ) always clobbers reg byte a -Statement [19] (word) print_word::w#2 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#2 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#2 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [23] (word) print_word::w#3 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#3 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#3 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [27] (word~) main::$15 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$15 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$15 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [28] (byte) print_byte::b#2 ← > (word~) main::$15 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#2 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#2 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [32] (word~) main::$19 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$19 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$19 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [33] (byte) print_byte::b#3 ← < (word~) main::$19 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#3 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#3 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [37] (word~) main::$23 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$23 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$23 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [38] (byte) print_byte::b#4 ← > (word~) main::$23 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#4 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#4 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [42] (word~) main::$27 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::$27 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::$27 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [43] (byte) print_byte::b#5 ← < (word~) main::$27 [ main::dw#10 print_line_cursor#19 print_byte::b#5 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 print_byte::b#5 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [48] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 [ main::dw#1 print_line_cursor#1 ] ( main:2 [ main::dw#1 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [50] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 [ main::dw#1 print_char_cursor#72 print_line_cursor#1 ] ( main:2 [ main::dw#1 print_char_cursor#72 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [53] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:46 [ main::dw#10 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [54] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:46 [ main::dw#10 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [57] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ( main:2::print_byte:29 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:34 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:39 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:44 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:20::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:24::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:16::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:16::print_word:77::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:20::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:24::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:16::print_word:75::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:16::print_word:77::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ) always clobbers reg byte a -Statement [60] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_byte:29 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:34 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:39 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:44 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_byte::$2 ] main:2::print_word:20::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:24::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:16::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:16::print_word:77::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:20::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_word:24::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:16::print_word:75::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:16::print_word:77::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a -Statement [65] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 [ print_char_cursor#44 ] ( main:2::print_char:18 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:22 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:26 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:31 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:36 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:41 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:29::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:34::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:39::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:44::print_char:59 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:20::print_byte:70::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:24::print_byte:70::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:16::print_word:75::print_byte:70::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:16::print_word:77::print_byte:70::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:20::print_byte:72::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:24::print_byte:72::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:16::print_word:75::print_byte:72::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:16::print_word:77::print_byte:72::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:29::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:34::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:39::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:44::print_char:62 [ main::dw#10 print_line_cursor#19 print_char_cursor#44 ] main:2::print_word:20::print_byte:70::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:24::print_byte:70::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_dword:16::print_word:75::print_byte:70::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#44 ] main:2::print_dword:16::print_word:77::print_byte:70::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:20::print_byte:72::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_word:24::print_byte:72::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_dword:16::print_word:75::print_byte:72::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#44 ] main:2::print_dword:16::print_word:77::print_byte:72::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] ) always clobbers reg byte y -Statement [69] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ print_byte::b#0 print_char_cursor#65 print_word::w#4 ] ( main:2::print_word:20 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_word:24 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_dword:16::print_word:75 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_dword:16::print_word:77 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] ) always clobbers reg byte a -Statement [71] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ print_char_cursor#12 print_byte::b#1 ] ( main:2::print_word:20 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] main:2::print_word:24 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] main:2::print_dword:16::print_word:75 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::b#1 ] main:2::print_dword:16::print_word:77 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a -Statement [74] (word) print_word::w#0 ← > (dword) print_dword::dw#0 [ print_char_cursor#69 print_dword::dw#0 print_word::w#0 ] ( main:2::print_dword:16 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#69 print_dword::dw#0 print_word::w#0 ] ) always clobbers reg byte a -Statement [76] (word) print_word::w#1 ← < (dword) print_dword::dw#0 [ print_char_cursor#12 print_word::w#1 ] ( main:2::print_dword:16 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_word::w#1 ] ) always clobbers reg byte a -Statement [81] *((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 [83] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [67] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ print_byte::b#0 print_char_cursor#65 print_word::w#4 ] ( main:2::print_word:18 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_word:22 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_dword:14::print_word:73 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_dword:14::print_word:75 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] ) always clobbers reg byte a +Statement [69] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ print_char_cursor#12 print_byte::b#1 ] ( main:2::print_word:18 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] main:2::print_word:22 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] main:2::print_dword:14::print_word:73 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::b#1 ] main:2::print_dword:14::print_word:75 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a +Statement [72] (word) print_word::w#0 ← > (dword) print_dword::dw#0 [ print_char_cursor#69 print_dword::dw#0 print_word::w#0 ] ( main:2::print_dword:14 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#69 print_dword::dw#0 print_word::w#0 ] ) always clobbers reg byte a +Statement [74] (word) print_word::w#1 ← < (dword) print_dword::dw#0 [ print_char_cursor#12 print_word::w#1 ] ( main:2::print_dword:14 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_word::w#1 ] ) always clobbers reg byte a +Statement [79] *((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 [81] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [8] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::$32 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::$32 ] ) always clobbers reg byte a +Statement [9] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ) always clobbers reg byte a +Statement [11] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 main::$33 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 main::$33 ] ) always clobbers reg byte a +Statement [12] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 ] ) always clobbers reg byte a +Statement [13] (dword) print_dword::dw#0 ← (dword) main::dw2#10 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 print_dword::dw#0 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 print_dword::dw#0 ] ) always clobbers reg byte a +Statement [17] (word) print_word::w#2 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#2 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#2 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [21] (word) print_word::w#3 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#3 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#3 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [25] (word~) main::$15 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$15 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$15 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [26] (byte) print_byte::b#2 ← > (word~) main::$15 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#2 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#2 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [30] (word~) main::$19 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$19 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$19 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [31] (byte) print_byte::b#3 ← < (word~) main::$19 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#3 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#3 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [35] (word~) main::$23 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$23 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$23 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [36] (byte) print_byte::b#4 ← > (word~) main::$23 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#4 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#4 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [40] (word~) main::$27 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::$27 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::$27 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [41] (byte) print_byte::b#5 ← < (word~) main::$27 [ main::dw#10 print_line_cursor#19 print_byte::b#5 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 print_byte::b#5 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [46] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 [ main::dw#1 print_line_cursor#1 ] ( main:2 [ main::dw#1 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [48] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 [ main::dw#1 print_char_cursor#72 print_line_cursor#1 ] ( main:2 [ main::dw#1 print_char_cursor#72 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [51] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:44 [ main::dw#10 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [52] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:44 [ main::dw#10 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [55] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ) always clobbers reg byte a +Statement [58] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_byte::$2 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a +Statement [63] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 [ print_char_cursor#44 ] ( main:2::print_char:16 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:20 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:24 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:29 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:34 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:39 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:27::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:32::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:37::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:42::print_char:57 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:18::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:22::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:18::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:22::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:27::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:32::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:37::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:42::print_char:60 [ main::dw#10 print_line_cursor#19 print_char_cursor#44 ] main:2::print_word:18::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:22::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:18::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_word:22::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] ) always clobbers reg byte y +Statement [67] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ print_byte::b#0 print_char_cursor#65 print_word::w#4 ] ( main:2::print_word:18 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_word:22 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_dword:14::print_word:73 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_dword:14::print_word:75 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] ) always clobbers reg byte a +Statement [69] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ print_char_cursor#12 print_byte::b#1 ] ( main:2::print_word:18 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] main:2::print_word:22 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] main:2::print_dword:14::print_word:73 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::b#1 ] main:2::print_dword:14::print_word:75 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a +Statement [72] (word) print_word::w#0 ← > (dword) print_dword::dw#0 [ print_char_cursor#69 print_dword::dw#0 print_word::w#0 ] ( main:2::print_dword:14 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#69 print_dword::dw#0 print_word::w#0 ] ) always clobbers reg byte a +Statement [74] (word) print_word::w#1 ← < (dword) print_dword::dw#0 [ print_char_cursor#12 print_word::w#1 ] ( main:2::print_dword:14 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_word::w#1 ] ) always clobbers reg byte a +Statement [79] *((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 [81] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) 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_DWORD:2 [ main::dw#10 main::dw#1 ] : zp ZP_DWORD:2 , Potential registers zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] : zp ZP_WORD:6 , Potential registers zp ZP_BYTE:8 [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:8 , reg byte x , @@ -1740,56 +1709,52 @@ Potential registers zp ZP_BYTE:9 [ print_char::ch#8 print_char::ch#0 print_char: Potential registers zp ZP_WORD:10 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] : zp ZP_WORD:10 , Potential registers zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] : zp ZP_WORD:12 , Potential registers zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:14 , -Potential registers zp ZP_WORD:16 [ main::$1 ] : zp ZP_WORD:16 , -Potential registers zp ZP_WORD:18 [ main::$2 ] : zp ZP_WORD:18 , reg byte alu , -Potential registers zp ZP_WORD:20 [ main::$32 ] : zp ZP_WORD:20 , -Potential registers zp ZP_DWORD:22 [ main::dw2#1 ] : zp ZP_DWORD:22 , -Potential registers zp ZP_WORD:26 [ main::$4 ] : zp ZP_WORD:26 , -Potential registers zp ZP_WORD:28 [ main::$5 ] : zp ZP_WORD:28 , reg byte alu , -Potential registers zp ZP_WORD:30 [ main::$33 ] : zp ZP_WORD:30 , -Potential registers zp ZP_DWORD:32 [ main::dw2#10 ] : zp ZP_DWORD:32 , -Potential registers zp ZP_DWORD:36 [ print_dword::dw#0 ] : zp ZP_DWORD:36 , -Potential registers zp ZP_WORD:40 [ main::$15 ] : zp ZP_WORD:40 , -Potential registers zp ZP_WORD:42 [ main::$19 ] : zp ZP_WORD:42 , -Potential registers zp ZP_WORD:44 [ main::$23 ] : zp ZP_WORD:44 , -Potential registers zp ZP_WORD:46 [ main::$27 ] : zp ZP_WORD:46 , -Potential registers zp ZP_BYTE:48 [ print_byte::$0 ] : zp ZP_BYTE:48 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:49 [ print_byte::$2 ] : zp ZP_BYTE:49 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:16 [ main::$2 ] : zp ZP_WORD:16 , reg byte alu , +Potential registers zp ZP_WORD:18 [ main::$32 ] : zp ZP_WORD:18 , +Potential registers zp ZP_DWORD:20 [ main::dw2#1 ] : zp ZP_DWORD:20 , +Potential registers zp ZP_WORD:24 [ main::$5 ] : zp ZP_WORD:24 , reg byte alu , +Potential registers zp ZP_WORD:26 [ main::$33 ] : zp ZP_WORD:26 , +Potential registers zp ZP_DWORD:28 [ main::dw2#10 ] : zp ZP_DWORD:28 , +Potential registers zp ZP_DWORD:32 [ print_dword::dw#0 ] : zp ZP_DWORD:32 , +Potential registers zp ZP_WORD:36 [ main::$15 ] : zp ZP_WORD:36 , +Potential registers zp ZP_WORD:38 [ main::$19 ] : zp ZP_WORD:38 , +Potential registers zp ZP_WORD:40 [ main::$23 ] : zp ZP_WORD:40 , +Potential registers zp ZP_WORD:42 [ main::$27 ] : zp ZP_WORD:42 , +Potential registers zp ZP_BYTE:44 [ print_byte::$0 ] : zp ZP_BYTE:44 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:45 [ print_byte::$2 ] : zp ZP_BYTE:45 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 110: zp ZP_WORD:16 [ main::$1 ] 110: zp ZP_WORD:26 [ main::$4 ] 22: zp ZP_WORD:18 [ main::$2 ] 22: zp ZP_WORD:20 [ main::$32 ] 22: zp ZP_WORD:28 [ main::$5 ] 22: zp ZP_WORD:30 [ main::$33 ] 22: zp ZP_WORD:40 [ main::$15 ] 22: zp ZP_WORD:42 [ main::$19 ] 22: zp ZP_WORD:44 [ main::$23 ] 22: zp ZP_WORD:46 [ main::$27 ] 12.61: zp ZP_DWORD:2 [ main::dw#10 main::dw#1 ] 8.25: zp ZP_DWORD:22 [ main::dw2#1 ] 3.14: zp ZP_DWORD:32 [ main::dw2#10 ] -Uplift Scope [] 250.75: zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] 95.77: zp ZP_WORD:10 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] -Uplift Scope [print_byte] 109: zp ZP_BYTE:8 [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:48 [ print_byte::$0 ] 4: zp ZP_BYTE:49 [ print_byte::$2 ] +Uplift Scope [] 250.76: zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] 96.03: zp ZP_WORD:10 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] +Uplift Scope [main] 22: zp ZP_WORD:16 [ main::$2 ] 22: zp ZP_WORD:18 [ main::$32 ] 22: zp ZP_WORD:24 [ main::$5 ] 22: zp ZP_WORD:26 [ main::$33 ] 22: zp ZP_WORD:36 [ main::$15 ] 22: zp ZP_WORD:38 [ main::$19 ] 22: zp ZP_WORD:40 [ main::$23 ] 22: zp ZP_WORD:42 [ main::$27 ] 12.41: zp ZP_DWORD:2 [ main::dw#10 main::dw#1 ] 7.33: zp ZP_DWORD:20 [ main::dw2#1 ] 3.14: zp ZP_DWORD:28 [ main::dw2#10 ] +Uplift Scope [print_byte] 109: zp ZP_BYTE:8 [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:44 [ print_byte::$0 ] 4: zp ZP_BYTE:45 [ print_byte::$2 ] Uplift Scope [print_word] 62: zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] Uplift Scope [print_cls] 33: zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] Uplift Scope [print_char] 14: zp ZP_BYTE:9 [ print_char::ch#8 print_char::ch#0 print_char::ch#1 ] -Uplift Scope [print_dword] 5: zp ZP_DWORD:36 [ print_dword::dw#0 ] +Uplift Scope [print_dword] 5: zp ZP_DWORD:32 [ print_dword::dw#0 ] Uplift Scope [print_ln] -Uplifting [main] best 9187 combination zp ZP_WORD:16 [ main::$1 ] zp ZP_WORD:26 [ main::$4 ] zp ZP_WORD:18 [ main::$2 ] zp ZP_WORD:20 [ main::$32 ] zp ZP_WORD:28 [ main::$5 ] zp ZP_WORD:30 [ main::$33 ] zp ZP_WORD:40 [ main::$15 ] zp ZP_WORD:42 [ main::$19 ] zp ZP_WORD:44 [ main::$23 ] zp ZP_WORD:46 [ main::$27 ] zp ZP_DWORD:2 [ main::dw#10 main::dw#1 ] zp ZP_DWORD:22 [ main::dw2#1 ] zp ZP_DWORD:32 [ main::dw2#10 ] -Uplifting [] best 9187 combination zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] zp ZP_WORD:10 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] -Uplifting [print_byte] best 9135 combination reg byte x [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [print_word] best 9135 combination zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] -Uplifting [print_cls] best 9135 combination zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_char] best 9108 combination reg byte a [ print_char::ch#8 print_char::ch#0 print_char::ch#1 ] -Uplifting [print_dword] best 9108 combination zp ZP_DWORD:36 [ print_dword::dw#0 ] -Uplifting [print_ln] best 9108 combination -Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ main::$2 ] ] with [ zp ZP_WORD:20 [ main::$32 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:22 [ main::dw2#1 ] ] with [ zp ZP_DWORD:32 [ main::dw2#10 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:28 [ main::$5 ] ] with [ zp ZP_WORD:30 [ main::$33 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:22 [ main::dw2#1 main::dw2#10 ] ] with [ zp ZP_DWORD:36 [ print_dword::dw#0 ] ] - score: 1 +Uplifting [] best 8947 combination zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] zp ZP_WORD:10 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] +Uplifting [main] best 8947 combination zp ZP_WORD:16 [ main::$2 ] zp ZP_WORD:18 [ main::$32 ] zp ZP_WORD:24 [ main::$5 ] zp ZP_WORD:26 [ main::$33 ] zp ZP_WORD:36 [ main::$15 ] zp ZP_WORD:38 [ main::$19 ] zp ZP_WORD:40 [ main::$23 ] zp ZP_WORD:42 [ main::$27 ] zp ZP_DWORD:2 [ main::dw#10 main::dw#1 ] zp ZP_DWORD:20 [ main::dw2#1 ] zp ZP_DWORD:28 [ main::dw2#10 ] +Uplifting [print_byte] best 8895 combination reg byte x [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_word] best 8895 combination zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] +Uplifting [print_cls] best 8895 combination zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_char] best 8868 combination reg byte a [ print_char::ch#8 print_char::ch#0 print_char::ch#1 ] +Uplifting [print_dword] best 8868 combination zp ZP_DWORD:32 [ print_dword::dw#0 ] +Uplifting [print_ln] best 8868 combination +Coalescing zero page register with common assignment [ zp ZP_WORD:16 [ main::$2 ] ] with [ zp ZP_WORD:18 [ main::$32 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:20 [ main::dw2#1 ] ] with [ zp ZP_DWORD:28 [ main::dw2#10 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:24 [ main::$5 ] ] with [ zp ZP_WORD:26 [ main::$33 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:20 [ main::dw2#1 main::dw2#10 ] ] with [ zp ZP_DWORD:32 [ print_dword::dw#0 ] ] - score: 1 Coalescing zero page register [ zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] ] with [ zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 ] ] with [ zp ZP_WORD:16 [ main::$1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 main::$1 ] ] with [ zp ZP_WORD:26 [ main::$4 ] ] -Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] ] with [ zp ZP_WORD:18 [ main::$2 main::$32 ] ] -Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 main::$2 main::$32 ] ] with [ zp ZP_WORD:28 [ main::$5 main::$33 ] ] -Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 main::$2 main::$32 main::$5 main::$33 ] ] with [ zp ZP_WORD:40 [ main::$15 ] ] -Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 main::$2 main::$32 main::$5 main::$33 main::$15 ] ] with [ zp ZP_WORD:42 [ main::$19 ] ] -Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 main::$2 main::$32 main::$5 main::$33 main::$15 main::$19 ] ] with [ zp ZP_WORD:44 [ main::$23 ] ] -Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 main::$2 main::$32 main::$5 main::$33 main::$15 main::$19 main::$23 ] ] with [ zp ZP_WORD:46 [ main::$27 ] ] +Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] ] with [ zp ZP_WORD:16 [ main::$2 main::$32 ] ] +Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 main::$2 main::$32 ] ] with [ zp ZP_WORD:24 [ main::$5 main::$33 ] ] +Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 main::$2 main::$32 main::$5 main::$33 ] ] with [ zp ZP_WORD:36 [ main::$15 ] ] +Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 main::$2 main::$32 main::$5 main::$33 main::$15 ] ] with [ zp ZP_WORD:38 [ main::$19 ] ] +Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 main::$2 main::$32 main::$5 main::$33 main::$15 main::$19 ] ] with [ zp ZP_WORD:40 [ main::$23 ] ] +Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 main::$2 main::$32 main::$5 main::$33 main::$15 main::$19 main::$23 ] ] with [ zp ZP_WORD:42 [ main::$27 ] ] Allocated (was zp ZP_WORD:10) zp ZP_WORD:8 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] Allocated (was zp ZP_WORD:12) zp ZP_WORD:10 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 main::$2 main::$32 main::$5 main::$33 main::$15 main::$19 main::$23 main::$27 ] -Allocated (was zp ZP_DWORD:22) zp ZP_DWORD:12 [ main::dw2#1 main::dw2#10 print_dword::dw#0 ] +Allocated (was zp ZP_DWORD:20) zp ZP_DWORD:12 [ main::dw2#1 main::dw2#10 print_dword::dw#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 File Comments @@ -1818,9 +1783,7 @@ bend_from_b20: bend: //SEG10 main main: { - .label _1 = 6 .label _2 = $a - .label _4 = 6 .label _5 = $a .label _15 = $a .label _19 = $a @@ -1831,7 +1794,7 @@ main: { .label dw2 = $c .label dw = 2 //SEG11 [5] call print_cls - //SEG12 [79] phi from main to print_cls [phi:main->print_cls] + //SEG12 [77] 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] @@ -1858,17 +1821,12 @@ main: { jmp b1 //SEG17 main::@1 b1: - //SEG18 [7] (word~) main::$1 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 - lda dw+2 - sta _1 - lda dw+3 - sta _1+1 - //SEG19 [8] (word~) main::$2 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 + //SEG18 [7] (word~) main::$2 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 lda dw+2 sta _2 lda dw+3 sta _2+1 - //SEG20 [9] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz1_plus_vwuc1 + //SEG19 [8] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz1_plus_vwuc1 clc lda _32 adc #<$1111 @@ -1876,7 +1834,7 @@ main: { lda _32+1 adc #>$1111 sta _32+1 - //SEG21 [10] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 -- vduz1=vduz2_sethi_vwuz3 + //SEG20 [9] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 -- vduz1=vduz2_sethi_vwuz3 lda dw sta dw2 lda dw+1 @@ -1885,18 +1843,12 @@ main: { sta dw2+2 lda _32+1 sta dw2+3 - //SEG22 [11] (word~) main::$4 ← < (dword) main::dw2#1 -- vwuz1=_lo_vduz2 - // Test set/get high word of dword - lda dw2 - sta _4 - lda dw2+1 - sta _4+1 - //SEG23 [12] (word~) main::$5 ← < (dword) main::dw#10 -- vwuz1=_lo_vduz2 + //SEG21 [10] (word~) main::$5 ← < (dword) main::dw#10 -- vwuz1=_lo_vduz2 lda dw sta _5 lda dw+1 sta _5+1 - //SEG24 [13] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz1_plus_vwuc1 + //SEG22 [11] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz1_plus_vwuc1 clc lda _33 adc #<$1111 @@ -1904,195 +1856,195 @@ main: { lda _33+1 adc #>$1111 sta _33+1 - //SEG25 [14] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 -- vduz1=vduz1_setlo_vwuz2 + //SEG23 [12] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 -- vduz1=vduz1_setlo_vwuz2 lda _33 sta dw2 lda _33+1 sta dw2+1 - //SEG26 [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 - //SEG27 [16] call print_dword + //SEG24 [13] (dword) print_dword::dw#0 ← (dword) main::dw2#10 + //SEG25 [14] call print_dword jsr print_dword - //SEG28 [17] phi from main::@1 to main::@4 [phi:main::@1->main::@4] + //SEG26 [15] phi from main::@1 to main::@4 [phi:main::@1->main::@4] b4_from_b1: jmp b4 - //SEG29 main::@4 + //SEG27 main::@4 b4: - //SEG30 [18] call print_char - //SEG31 [64] phi from main::@4 to print_char [phi:main::@4->print_char] + //SEG28 [16] call print_char + //SEG29 [62] phi from main::@4 to print_char [phi:main::@4->print_char] print_char_from_b4: - //SEG32 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@4->print_char#0] -- register_copy - //SEG33 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@4->print_char#1] -- vbuaa=vbuc1 + //SEG30 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@4->print_char#0] -- register_copy + //SEG31 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char jmp b5 - //SEG34 main::@5 + //SEG32 main::@5 b5: - //SEG35 [19] (word) print_word::w#2 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG33 [17] (word) print_word::w#2 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2+2 sta print_word.w lda dw2+3 sta print_word.w+1 - //SEG36 [20] call print_word - //SEG37 [68] phi from main::@5 to print_word [phi:main::@5->print_word] + //SEG34 [18] call print_word + //SEG35 [66] phi from main::@5 to print_word [phi:main::@5->print_word] print_word_from_b5: - //SEG38 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@5->print_word#0] -- register_copy - //SEG39 [68] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:main::@5->print_word#1] -- register_copy + //SEG36 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@5->print_word#0] -- register_copy + //SEG37 [66] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:main::@5->print_word#1] -- register_copy jsr print_word - //SEG40 [21] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG38 [19] phi from main::@5 to main::@6 [phi:main::@5->main::@6] b6_from_b5: jmp b6 - //SEG41 main::@6 + //SEG39 main::@6 b6: - //SEG42 [22] call print_char - //SEG43 [64] phi from main::@6 to print_char [phi:main::@6->print_char] + //SEG40 [20] call print_char + //SEG41 [62] phi from main::@6 to print_char [phi:main::@6->print_char] print_char_from_b6: - //SEG44 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@6->print_char#0] -- register_copy - //SEG45 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@6->print_char#1] -- vbuaa=vbuc1 + //SEG42 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@6->print_char#0] -- register_copy + //SEG43 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@6->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char jmp b7 - //SEG46 main::@7 + //SEG44 main::@7 b7: - //SEG47 [23] (word) print_word::w#3 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG45 [21] (word) print_word::w#3 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2 sta print_word.w lda dw2+1 sta print_word.w+1 - //SEG48 [24] call print_word - //SEG49 [68] phi from main::@7 to print_word [phi:main::@7->print_word] + //SEG46 [22] call print_word + //SEG47 [66] phi from main::@7 to print_word [phi:main::@7->print_word] print_word_from_b7: - //SEG50 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@7->print_word#0] -- register_copy - //SEG51 [68] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:main::@7->print_word#1] -- register_copy + //SEG48 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@7->print_word#0] -- register_copy + //SEG49 [66] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:main::@7->print_word#1] -- register_copy jsr print_word - //SEG52 [25] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + //SEG50 [23] phi from main::@7 to main::@8 [phi:main::@7->main::@8] b8_from_b7: jmp b8 - //SEG53 main::@8 + //SEG51 main::@8 b8: - //SEG54 [26] call print_char - //SEG55 [64] phi from main::@8 to print_char [phi:main::@8->print_char] + //SEG52 [24] call print_char + //SEG53 [62] phi from main::@8 to print_char [phi:main::@8->print_char] print_char_from_b8: - //SEG56 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@8->print_char#0] -- register_copy - //SEG57 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@8->print_char#1] -- vbuaa=vbuc1 + //SEG54 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@8->print_char#0] -- register_copy + //SEG55 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@8->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char jmp b9 - //SEG58 main::@9 + //SEG56 main::@9 b9: - //SEG59 [27] (word~) main::$15 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG57 [25] (word~) main::$15 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2+2 sta _15 lda dw2+3 sta _15+1 - //SEG60 [28] (byte) print_byte::b#2 ← > (word~) main::$15 -- vbuxx=_hi_vwuz1 + //SEG58 [26] (byte) print_byte::b#2 ← > (word~) main::$15 -- vbuxx=_hi_vwuz1 lda _15+1 tax - //SEG61 [29] call print_byte - //SEG62 [56] phi from main::@9 to print_byte [phi:main::@9->print_byte] + //SEG59 [27] call print_byte + //SEG60 [54] phi from main::@9 to print_byte [phi:main::@9->print_byte] print_byte_from_b9: - //SEG63 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@9->print_byte#0] -- register_copy - //SEG64 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#2 [phi:main::@9->print_byte#1] -- register_copy + //SEG61 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@9->print_byte#0] -- register_copy + //SEG62 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#2 [phi:main::@9->print_byte#1] -- register_copy jsr print_byte - //SEG65 [30] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG63 [28] phi from main::@9 to main::@10 [phi:main::@9->main::@10] b10_from_b9: jmp b10 - //SEG66 main::@10 + //SEG64 main::@10 b10: - //SEG67 [31] call print_char - //SEG68 [64] phi from main::@10 to print_char [phi:main::@10->print_char] + //SEG65 [29] call print_char + //SEG66 [62] phi from main::@10 to print_char [phi:main::@10->print_char] print_char_from_b10: - //SEG69 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@10->print_char#0] -- register_copy - //SEG70 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@10->print_char#1] -- vbuaa=vbuc1 + //SEG67 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@10->print_char#0] -- register_copy + //SEG68 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@10->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char jmp b11 - //SEG71 main::@11 + //SEG69 main::@11 b11: - //SEG72 [32] (word~) main::$19 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG70 [30] (word~) main::$19 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2+2 sta _19 lda dw2+3 sta _19+1 - //SEG73 [33] (byte) print_byte::b#3 ← < (word~) main::$19 -- vbuxx=_lo_vwuz1 + //SEG71 [31] (byte) print_byte::b#3 ← < (word~) main::$19 -- vbuxx=_lo_vwuz1 lda _19 tax - //SEG74 [34] call print_byte - //SEG75 [56] phi from main::@11 to print_byte [phi:main::@11->print_byte] + //SEG72 [32] call print_byte + //SEG73 [54] phi from main::@11 to print_byte [phi:main::@11->print_byte] print_byte_from_b11: - //SEG76 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@11->print_byte#0] -- register_copy - //SEG77 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#3 [phi:main::@11->print_byte#1] -- register_copy + //SEG74 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@11->print_byte#0] -- register_copy + //SEG75 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#3 [phi:main::@11->print_byte#1] -- register_copy jsr print_byte - //SEG78 [35] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + //SEG76 [33] phi from main::@11 to main::@12 [phi:main::@11->main::@12] b12_from_b11: jmp b12 - //SEG79 main::@12 + //SEG77 main::@12 b12: - //SEG80 [36] call print_char - //SEG81 [64] phi from main::@12 to print_char [phi:main::@12->print_char] + //SEG78 [34] call print_char + //SEG79 [62] phi from main::@12 to print_char [phi:main::@12->print_char] print_char_from_b12: - //SEG82 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@12->print_char#0] -- register_copy - //SEG83 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@12->print_char#1] -- vbuaa=vbuc1 + //SEG80 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@12->print_char#0] -- register_copy + //SEG81 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@12->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char jmp b13 - //SEG84 main::@13 + //SEG82 main::@13 b13: - //SEG85 [37] (word~) main::$23 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG83 [35] (word~) main::$23 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2 sta _23 lda dw2+1 sta _23+1 - //SEG86 [38] (byte) print_byte::b#4 ← > (word~) main::$23 -- vbuxx=_hi_vwuz1 + //SEG84 [36] (byte) print_byte::b#4 ← > (word~) main::$23 -- vbuxx=_hi_vwuz1 lda _23+1 tax - //SEG87 [39] call print_byte - //SEG88 [56] phi from main::@13 to print_byte [phi:main::@13->print_byte] + //SEG85 [37] call print_byte + //SEG86 [54] phi from main::@13 to print_byte [phi:main::@13->print_byte] print_byte_from_b13: - //SEG89 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@13->print_byte#0] -- register_copy - //SEG90 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#4 [phi:main::@13->print_byte#1] -- register_copy + //SEG87 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@13->print_byte#0] -- register_copy + //SEG88 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#4 [phi:main::@13->print_byte#1] -- register_copy jsr print_byte - //SEG91 [40] phi from main::@13 to main::@14 [phi:main::@13->main::@14] + //SEG89 [38] phi from main::@13 to main::@14 [phi:main::@13->main::@14] b14_from_b13: jmp b14 - //SEG92 main::@14 + //SEG90 main::@14 b14: - //SEG93 [41] call print_char - //SEG94 [64] phi from main::@14 to print_char [phi:main::@14->print_char] + //SEG91 [39] call print_char + //SEG92 [62] phi from main::@14 to print_char [phi:main::@14->print_char] print_char_from_b14: - //SEG95 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@14->print_char#0] -- register_copy - //SEG96 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@14->print_char#1] -- vbuaa=vbuc1 + //SEG93 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@14->print_char#0] -- register_copy + //SEG94 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@14->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char jmp b15 - //SEG97 main::@15 + //SEG95 main::@15 b15: - //SEG98 [42] (word~) main::$27 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG96 [40] (word~) main::$27 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2 sta _27 lda dw2+1 sta _27+1 - //SEG99 [43] (byte) print_byte::b#5 ← < (word~) main::$27 -- vbuxx=_lo_vwuz1 + //SEG97 [41] (byte) print_byte::b#5 ← < (word~) main::$27 -- vbuxx=_lo_vwuz1 lda _27 tax - //SEG100 [44] call print_byte - //SEG101 [56] phi from main::@15 to print_byte [phi:main::@15->print_byte] + //SEG98 [42] call print_byte + //SEG99 [54] phi from main::@15 to print_byte [phi:main::@15->print_byte] print_byte_from_b15: - //SEG102 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@15->print_byte#0] -- register_copy - //SEG103 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#5 [phi:main::@15->print_byte#1] -- register_copy + //SEG100 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@15->print_byte#0] -- register_copy + //SEG101 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#5 [phi:main::@15->print_byte#1] -- register_copy jsr print_byte - //SEG104 [45] phi from main::@15 to main::@16 [phi:main::@15->main::@16] + //SEG102 [43] phi from main::@15 to main::@16 [phi:main::@15->main::@16] b16_from_b15: jmp b16 - //SEG105 main::@16 + //SEG103 main::@16 b16: - //SEG106 [46] call print_ln - //SEG107 [51] phi from main::@16 to print_ln [phi:main::@16->print_ln] + //SEG104 [44] call print_ln + //SEG105 [49] phi from main::@16 to print_ln [phi:main::@16->print_ln] print_ln_from_b16: jsr print_ln jmp b17 - //SEG108 main::@17 + //SEG106 main::@17 b17: - //SEG109 [47] (dword) main::dw#1 ← ++ (dword) main::dw#10 -- vduz1=_inc_vduz1 + //SEG107 [45] (dword) main::dw#1 ← ++ (dword) main::dw#10 -- vduz1=_inc_vduz1 inc dw bne !+ inc dw+1 @@ -2101,7 +2053,7 @@ main: { bne !+ inc dw+3 !: - //SEG110 [48] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 -- vduz1_neq_vduc1_then_la1 + //SEG108 [46] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 -- vduz1_neq_vduc1_then_la1 lda dw+3 cmp #>$12345690>>$10 bne b18 @@ -2115,35 +2067,35 @@ main: { cmp #<$12345690 bne b18 jmp breturn - //SEG111 main::@return + //SEG109 main::@return breturn: - //SEG112 [49] return + //SEG110 [47] return rts - //SEG113 main::@18 + //SEG111 main::@18 b18: - //SEG114 [50] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG112 [48] (byte*~) print_char_cursor#72 ← (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 - //SEG115 [6] phi from main::@18 to main::@1 [phi:main::@18->main::@1] + //SEG113 [6] phi from main::@18 to main::@1 [phi:main::@18->main::@1] b1_from_b18: - //SEG116 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@18->main::@1#0] -- register_copy - //SEG117 [6] phi (byte*) print_char_cursor#69 = (byte*~) print_char_cursor#72 [phi:main::@18->main::@1#1] -- register_copy - //SEG118 [6] phi (dword) main::dw#10 = (dword) main::dw#1 [phi:main::@18->main::@1#2] -- register_copy + //SEG114 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@18->main::@1#0] -- register_copy + //SEG115 [6] phi (byte*) print_char_cursor#69 = (byte*~) print_char_cursor#72 [phi:main::@18->main::@1#1] -- register_copy + //SEG116 [6] phi (dword) main::dw#10 = (dword) main::dw#1 [phi:main::@18->main::@1#2] -- register_copy jmp b1 } -//SEG119 print_ln +//SEG117 print_ln // Print a newline print_ln: { - //SEG120 [52] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG118 [50] 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: - //SEG121 [52] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG119 [50] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG122 print_ln::@1 + //SEG120 print_ln::@1 b1: - //SEG123 [53] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG121 [51] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -2151,7 +2103,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG124 [54] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG122 [52] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -2161,165 +2113,165 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG125 print_ln::@return + //SEG123 print_ln::@return breturn: - //SEG126 [55] return + //SEG124 [53] return rts } -//SEG127 print_byte +//SEG125 print_byte // Print a byte as HEX // print_byte(byte register(X) b) print_byte: { - //SEG128 [57] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG126 [55] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG129 [58] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG127 [56] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG130 [59] call print_char - //SEG131 [64] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG128 [57] call print_char + //SEG129 [62] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG132 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#67 [phi:print_byte->print_char#0] -- register_copy - //SEG133 [64] phi (byte) print_char::ch#8 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG130 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#67 [phi:print_byte->print_char#0] -- register_copy + //SEG131 [62] phi (byte) print_char::ch#8 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG134 print_byte::@1 + //SEG132 print_byte::@1 b1: - //SEG135 [60] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG133 [58] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG136 [61] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG134 [59] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG137 [62] call print_char - //SEG138 [64] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG135 [60] call print_char + //SEG136 [62] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG139 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG140 [64] phi (byte) print_char::ch#8 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG137 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG138 [62] phi (byte) print_char::ch#8 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG141 print_byte::@return + //SEG139 print_byte::@return breturn: - //SEG142 [63] return + //SEG140 [61] return rts } -//SEG143 print_char +//SEG141 print_char // Print a single char // print_char(byte register(A) ch) print_char: { - //SEG144 [65] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 -- _deref_pbuz1=vbuaa + //SEG142 [63] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG145 [66] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 -- pbuz1=_inc_pbuz1 + //SEG143 [64] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG146 print_char::@return + //SEG144 print_char::@return breturn: - //SEG147 [67] return + //SEG145 [65] return rts } -//SEG148 print_word +//SEG146 print_word // Print a word as HEX // print_word(word zeropage($a) w) print_word: { .label w = $a - //SEG149 [69] (byte) print_byte::b#0 ← > (word) print_word::w#4 -- vbuxx=_hi_vwuz1 + //SEG147 [67] (byte) print_byte::b#0 ← > (word) print_word::w#4 -- vbuxx=_hi_vwuz1 lda w+1 tax - //SEG150 [70] call print_byte - //SEG151 [56] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG148 [68] call print_byte + //SEG149 [54] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG152 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#65 [phi:print_word->print_byte#0] -- register_copy - //SEG153 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG150 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#65 [phi:print_word->print_byte#0] -- register_copy + //SEG151 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG154 print_word::@1 + //SEG152 print_word::@1 b1: - //SEG155 [71] (byte) print_byte::b#1 ← < (word) print_word::w#4 -- vbuxx=_lo_vwuz1 + //SEG153 [69] (byte) print_byte::b#1 ← < (word) print_word::w#4 -- vbuxx=_lo_vwuz1 lda w tax - //SEG156 [72] call print_byte - //SEG157 [56] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG154 [70] call print_byte + //SEG155 [54] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG158 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG159 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG156 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG157 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG160 print_word::@return + //SEG158 print_word::@return breturn: - //SEG161 [73] return + //SEG159 [71] return rts } -//SEG162 print_dword +//SEG160 print_dword // Print a dword as HEX // print_dword(dword zeropage($c) dw) print_dword: { .label dw = $c - //SEG163 [74] (word) print_word::w#0 ← > (dword) print_dword::dw#0 -- vwuz1=_hi_vduz2 + //SEG161 [72] (word) print_word::w#0 ← > (dword) print_dword::dw#0 -- vwuz1=_hi_vduz2 lda dw+2 sta print_word.w lda dw+3 sta print_word.w+1 - //SEG164 [75] call print_word - //SEG165 [68] phi from print_dword to print_word [phi:print_dword->print_word] + //SEG162 [73] call print_word + //SEG163 [66] phi from print_dword to print_word [phi:print_dword->print_word] print_word_from_print_dword: - //SEG166 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#69 [phi:print_dword->print_word#0] -- register_copy - //SEG167 [68] phi (word) print_word::w#4 = (word) print_word::w#0 [phi:print_dword->print_word#1] -- register_copy + //SEG164 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#69 [phi:print_dword->print_word#0] -- register_copy + //SEG165 [66] phi (word) print_word::w#4 = (word) print_word::w#0 [phi:print_dword->print_word#1] -- register_copy jsr print_word jmp b1 - //SEG168 print_dword::@1 + //SEG166 print_dword::@1 b1: - //SEG169 [76] (word) print_word::w#1 ← < (dword) print_dword::dw#0 -- vwuz1=_lo_vduz2 + //SEG167 [74] (word) print_word::w#1 ← < (dword) print_dword::dw#0 -- vwuz1=_lo_vduz2 lda dw sta print_word.w lda dw+1 sta print_word.w+1 - //SEG170 [77] call print_word - //SEG171 [68] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] + //SEG168 [75] call print_word + //SEG169 [66] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] print_word_from_b1: - //SEG172 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:print_dword::@1->print_word#0] -- register_copy - //SEG173 [68] phi (word) print_word::w#4 = (word) print_word::w#1 [phi:print_dword::@1->print_word#1] -- register_copy + //SEG170 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:print_dword::@1->print_word#0] -- register_copy + //SEG171 [66] phi (word) print_word::w#4 = (word) print_word::w#1 [phi:print_dword::@1->print_word#1] -- register_copy jsr print_word jmp breturn - //SEG174 print_dword::@return + //SEG172 print_dword::@return breturn: - //SEG175 [78] return + //SEG173 [76] return rts } -//SEG176 print_cls +//SEG174 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 6 - //SEG177 [80] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG175 [78] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG178 [80] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG176 [78] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG179 [80] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG177 [78] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG180 [80] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG178 [78] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG181 print_cls::@1 + //SEG179 print_cls::@1 b1: - //SEG182 [81] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG180 [79] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG183 [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG181 [80] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG184 [83] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG182 [81] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -2327,9 +2279,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG185 print_cls::@return + //SEG183 print_cls::@return breturn: - //SEG186 [84] return + //SEG184 [82] return rts } print_hextab: .text "0123456789abcdef" @@ -2449,7 +2401,6 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(word~) main::$1 $1 zp ZP_WORD:6 110.0 (word~) main::$15 $15 zp ZP_WORD:10 22.0 (word~) main::$19 $19 zp ZP_WORD:10 22.0 (word~) main::$2 $2 zp ZP_WORD:10 22.0 @@ -2457,7 +2408,6 @@ FINAL SYMBOL TABLE (word~) main::$27 $27 zp ZP_WORD:10 22.0 (word/signed dword/dword~) main::$32 $32 zp ZP_WORD:10 22.0 (word/signed dword/dword~) main::$33 $33 zp ZP_WORD:10 22.0 -(word~) main::$4 $4 zp ZP_WORD:6 110.0 (word~) main::$5 $5 zp ZP_WORD:10 22.0 (label) main::@1 (label) main::@10 @@ -2478,9 +2428,9 @@ FINAL SYMBOL TABLE (label) main::@return (dword) main::dw (dword) main::dw#1 dw zp ZP_DWORD:2 11.0 -(dword) main::dw#10 dw zp ZP_DWORD:2 1.6097560975609757 +(dword) main::dw#10 dw zp ZP_DWORD:2 1.4102564102564101 (dword) main::dw2 -(dword) main::dw2#1 dw2 zp ZP_DWORD:12 8.25 +(dword) main::dw2#1 dw2 zp ZP_DWORD:12 7.333333333333333 (dword) main::dw2#10 dw2 zp ZP_DWORD:12 3.142857142857143 (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 reg byte a 4.0 @@ -2506,7 +2456,7 @@ FINAL SYMBOL TABLE (byte*) print_char_cursor#44 print_char_cursor zp ZP_WORD:8 37.0 (byte*) print_char_cursor#65 print_char_cursor zp ZP_WORD:8 14.0 (byte*) print_char_cursor#67 print_char_cursor zp ZP_WORD:8 16.666666666666664 -(byte*) print_char_cursor#69 print_char_cursor zp ZP_WORD:8 1.1818181818181819 +(byte*) print_char_cursor#69 print_char_cursor zp ZP_WORD:8 1.4444444444444446 (byte*~) print_char_cursor#72 print_char_cursor zp ZP_WORD:8 22.0 (void()) print_cls() (label) print_cls::@1 @@ -2523,7 +2473,7 @@ FINAL SYMBOL TABLE (const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:6 46.42857142857143 -(byte*) print_line_cursor#19 print_line_cursor zp ZP_WORD:6 0.3170731707317073 +(byte*) print_line_cursor#19 print_line_cursor zp ZP_WORD:6 0.3333333333333333 (byte*) print_line_cursor#9 print_line_cursor zp ZP_WORD:6 204.0 (void()) print_ln() (label) print_ln::@1 @@ -2540,7 +2490,7 @@ FINAL SYMBOL TABLE (word) print_word::w#4 w zp ZP_WORD:10 9.999999999999998 zp ZP_DWORD:2 [ main::dw#10 main::dw#1 ] -zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 main::$1 main::$4 ] +zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 ] reg byte x [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#8 print_char::ch#0 print_char::ch#1 ] zp ZP_WORD:8 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] @@ -2551,7 +2501,7 @@ reg byte a [ print_byte::$2 ] FINAL ASSEMBLER -Score: 7674 +Score: 7434 //SEG0 File Comments //SEG1 Basic Upstart @@ -2570,9 +2520,7 @@ Score: 7674 //SEG9 @end //SEG10 main main: { - .label _1 = 6 .label _2 = $a - .label _4 = 6 .label _5 = $a .label _15 = $a .label _19 = $a @@ -2583,7 +2531,7 @@ main: { .label dw2 = $c .label dw = 2 //SEG11 [5] call print_cls - //SEG12 [79] phi from main to print_cls [phi:main->print_cls] + //SEG12 [77] 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 [6] phi (byte*) print_line_cursor#19 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 @@ -2607,17 +2555,12 @@ main: { sta dw+3 //SEG17 main::@1 b1: - //SEG18 [7] (word~) main::$1 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 - lda dw+2 - sta _1 - lda dw+3 - sta _1+1 - //SEG19 [8] (word~) main::$2 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 + //SEG18 [7] (word~) main::$2 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 lda dw+2 sta _2 lda dw+3 sta _2+1 - //SEG20 [9] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz1_plus_vwuc1 + //SEG19 [8] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz1_plus_vwuc1 clc lda _32 adc #<$1111 @@ -2625,7 +2568,7 @@ main: { lda _32+1 adc #>$1111 sta _32+1 - //SEG21 [10] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 -- vduz1=vduz2_sethi_vwuz3 + //SEG20 [9] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 -- vduz1=vduz2_sethi_vwuz3 lda dw sta dw2 lda dw+1 @@ -2634,18 +2577,12 @@ main: { sta dw2+2 lda _32+1 sta dw2+3 - //SEG22 [11] (word~) main::$4 ← < (dword) main::dw2#1 -- vwuz1=_lo_vduz2 - // Test set/get high word of dword - lda dw2 - sta _4 - lda dw2+1 - sta _4+1 - //SEG23 [12] (word~) main::$5 ← < (dword) main::dw#10 -- vwuz1=_lo_vduz2 + //SEG21 [10] (word~) main::$5 ← < (dword) main::dw#10 -- vwuz1=_lo_vduz2 lda dw sta _5 lda dw+1 sta _5+1 - //SEG24 [13] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz1_plus_vwuc1 + //SEG22 [11] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz1_plus_vwuc1 clc lda _33 adc #<$1111 @@ -2653,145 +2590,145 @@ main: { lda _33+1 adc #>$1111 sta _33+1 - //SEG25 [14] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 -- vduz1=vduz1_setlo_vwuz2 + //SEG23 [12] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 -- vduz1=vduz1_setlo_vwuz2 lda _33 sta dw2 lda _33+1 sta dw2+1 - //SEG26 [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 - //SEG27 [16] call print_dword + //SEG24 [13] (dword) print_dword::dw#0 ← (dword) main::dw2#10 + //SEG25 [14] call print_dword jsr print_dword - //SEG28 [17] phi from main::@1 to main::@4 [phi:main::@1->main::@4] - //SEG29 main::@4 - //SEG30 [18] call print_char - //SEG31 [64] phi from main::@4 to print_char [phi:main::@4->print_char] - //SEG32 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@4->print_char#0] -- register_copy - //SEG33 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@4->print_char#1] -- vbuaa=vbuc1 + //SEG26 [15] phi from main::@1 to main::@4 [phi:main::@1->main::@4] + //SEG27 main::@4 + //SEG28 [16] call print_char + //SEG29 [62] phi from main::@4 to print_char [phi:main::@4->print_char] + //SEG30 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@4->print_char#0] -- register_copy + //SEG31 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG34 main::@5 - //SEG35 [19] (word) print_word::w#2 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG32 main::@5 + //SEG33 [17] (word) print_word::w#2 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2+2 sta print_word.w lda dw2+3 sta print_word.w+1 - //SEG36 [20] call print_word - //SEG37 [68] phi from main::@5 to print_word [phi:main::@5->print_word] - //SEG38 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@5->print_word#0] -- register_copy - //SEG39 [68] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:main::@5->print_word#1] -- register_copy + //SEG34 [18] call print_word + //SEG35 [66] phi from main::@5 to print_word [phi:main::@5->print_word] + //SEG36 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@5->print_word#0] -- register_copy + //SEG37 [66] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:main::@5->print_word#1] -- register_copy jsr print_word - //SEG40 [21] phi from main::@5 to main::@6 [phi:main::@5->main::@6] - //SEG41 main::@6 - //SEG42 [22] call print_char - //SEG43 [64] phi from main::@6 to print_char [phi:main::@6->print_char] - //SEG44 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@6->print_char#0] -- register_copy - //SEG45 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@6->print_char#1] -- vbuaa=vbuc1 + //SEG38 [19] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG39 main::@6 + //SEG40 [20] call print_char + //SEG41 [62] phi from main::@6 to print_char [phi:main::@6->print_char] + //SEG42 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@6->print_char#0] -- register_copy + //SEG43 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@6->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG46 main::@7 - //SEG47 [23] (word) print_word::w#3 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG44 main::@7 + //SEG45 [21] (word) print_word::w#3 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2 sta print_word.w lda dw2+1 sta print_word.w+1 - //SEG48 [24] call print_word - //SEG49 [68] phi from main::@7 to print_word [phi:main::@7->print_word] - //SEG50 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@7->print_word#0] -- register_copy - //SEG51 [68] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:main::@7->print_word#1] -- register_copy + //SEG46 [22] call print_word + //SEG47 [66] phi from main::@7 to print_word [phi:main::@7->print_word] + //SEG48 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@7->print_word#0] -- register_copy + //SEG49 [66] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:main::@7->print_word#1] -- register_copy jsr print_word - //SEG52 [25] phi from main::@7 to main::@8 [phi:main::@7->main::@8] - //SEG53 main::@8 - //SEG54 [26] call print_char - //SEG55 [64] phi from main::@8 to print_char [phi:main::@8->print_char] - //SEG56 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@8->print_char#0] -- register_copy - //SEG57 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@8->print_char#1] -- vbuaa=vbuc1 + //SEG50 [23] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + //SEG51 main::@8 + //SEG52 [24] call print_char + //SEG53 [62] phi from main::@8 to print_char [phi:main::@8->print_char] + //SEG54 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@8->print_char#0] -- register_copy + //SEG55 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@8->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG58 main::@9 - //SEG59 [27] (word~) main::$15 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG56 main::@9 + //SEG57 [25] (word~) main::$15 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2+2 sta _15 lda dw2+3 sta _15+1 - //SEG60 [28] (byte) print_byte::b#2 ← > (word~) main::$15 -- vbuxx=_hi_vwuz1 + //SEG58 [26] (byte) print_byte::b#2 ← > (word~) main::$15 -- vbuxx=_hi_vwuz1 tax - //SEG61 [29] call print_byte - //SEG62 [56] phi from main::@9 to print_byte [phi:main::@9->print_byte] - //SEG63 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@9->print_byte#0] -- register_copy - //SEG64 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#2 [phi:main::@9->print_byte#1] -- register_copy + //SEG59 [27] call print_byte + //SEG60 [54] phi from main::@9 to print_byte [phi:main::@9->print_byte] + //SEG61 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@9->print_byte#0] -- register_copy + //SEG62 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#2 [phi:main::@9->print_byte#1] -- register_copy jsr print_byte - //SEG65 [30] phi from main::@9 to main::@10 [phi:main::@9->main::@10] - //SEG66 main::@10 - //SEG67 [31] call print_char - //SEG68 [64] phi from main::@10 to print_char [phi:main::@10->print_char] - //SEG69 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@10->print_char#0] -- register_copy - //SEG70 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@10->print_char#1] -- vbuaa=vbuc1 + //SEG63 [28] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG64 main::@10 + //SEG65 [29] call print_char + //SEG66 [62] phi from main::@10 to print_char [phi:main::@10->print_char] + //SEG67 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@10->print_char#0] -- register_copy + //SEG68 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@10->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG71 main::@11 - //SEG72 [32] (word~) main::$19 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG69 main::@11 + //SEG70 [30] (word~) main::$19 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2+2 sta _19 lda dw2+3 sta _19+1 - //SEG73 [33] (byte) print_byte::b#3 ← < (word~) main::$19 -- vbuxx=_lo_vwuz1 + //SEG71 [31] (byte) print_byte::b#3 ← < (word~) main::$19 -- vbuxx=_lo_vwuz1 lda _19 tax - //SEG74 [34] call print_byte - //SEG75 [56] phi from main::@11 to print_byte [phi:main::@11->print_byte] - //SEG76 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@11->print_byte#0] -- register_copy - //SEG77 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#3 [phi:main::@11->print_byte#1] -- register_copy + //SEG72 [32] call print_byte + //SEG73 [54] phi from main::@11 to print_byte [phi:main::@11->print_byte] + //SEG74 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@11->print_byte#0] -- register_copy + //SEG75 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#3 [phi:main::@11->print_byte#1] -- register_copy jsr print_byte - //SEG78 [35] phi from main::@11 to main::@12 [phi:main::@11->main::@12] - //SEG79 main::@12 - //SEG80 [36] call print_char - //SEG81 [64] phi from main::@12 to print_char [phi:main::@12->print_char] - //SEG82 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@12->print_char#0] -- register_copy - //SEG83 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@12->print_char#1] -- vbuaa=vbuc1 + //SEG76 [33] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + //SEG77 main::@12 + //SEG78 [34] call print_char + //SEG79 [62] phi from main::@12 to print_char [phi:main::@12->print_char] + //SEG80 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@12->print_char#0] -- register_copy + //SEG81 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@12->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG84 main::@13 - //SEG85 [37] (word~) main::$23 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG82 main::@13 + //SEG83 [35] (word~) main::$23 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2 sta _23 lda dw2+1 sta _23+1 - //SEG86 [38] (byte) print_byte::b#4 ← > (word~) main::$23 -- vbuxx=_hi_vwuz1 + //SEG84 [36] (byte) print_byte::b#4 ← > (word~) main::$23 -- vbuxx=_hi_vwuz1 tax - //SEG87 [39] call print_byte - //SEG88 [56] phi from main::@13 to print_byte [phi:main::@13->print_byte] - //SEG89 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@13->print_byte#0] -- register_copy - //SEG90 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#4 [phi:main::@13->print_byte#1] -- register_copy + //SEG85 [37] call print_byte + //SEG86 [54] phi from main::@13 to print_byte [phi:main::@13->print_byte] + //SEG87 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@13->print_byte#0] -- register_copy + //SEG88 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#4 [phi:main::@13->print_byte#1] -- register_copy jsr print_byte - //SEG91 [40] phi from main::@13 to main::@14 [phi:main::@13->main::@14] - //SEG92 main::@14 - //SEG93 [41] call print_char - //SEG94 [64] phi from main::@14 to print_char [phi:main::@14->print_char] - //SEG95 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@14->print_char#0] -- register_copy - //SEG96 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@14->print_char#1] -- vbuaa=vbuc1 + //SEG89 [38] phi from main::@13 to main::@14 [phi:main::@13->main::@14] + //SEG90 main::@14 + //SEG91 [39] call print_char + //SEG92 [62] phi from main::@14 to print_char [phi:main::@14->print_char] + //SEG93 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@14->print_char#0] -- register_copy + //SEG94 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@14->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG97 main::@15 - //SEG98 [42] (word~) main::$27 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG95 main::@15 + //SEG96 [40] (word~) main::$27 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2 sta _27 lda dw2+1 sta _27+1 - //SEG99 [43] (byte) print_byte::b#5 ← < (word~) main::$27 -- vbuxx=_lo_vwuz1 + //SEG97 [41] (byte) print_byte::b#5 ← < (word~) main::$27 -- vbuxx=_lo_vwuz1 lda _27 tax - //SEG100 [44] call print_byte - //SEG101 [56] phi from main::@15 to print_byte [phi:main::@15->print_byte] - //SEG102 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@15->print_byte#0] -- register_copy - //SEG103 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#5 [phi:main::@15->print_byte#1] -- register_copy + //SEG98 [42] call print_byte + //SEG99 [54] phi from main::@15 to print_byte [phi:main::@15->print_byte] + //SEG100 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@15->print_byte#0] -- register_copy + //SEG101 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#5 [phi:main::@15->print_byte#1] -- register_copy jsr print_byte - //SEG104 [45] phi from main::@15 to main::@16 [phi:main::@15->main::@16] - //SEG105 main::@16 - //SEG106 [46] call print_ln - //SEG107 [51] phi from main::@16 to print_ln [phi:main::@16->print_ln] + //SEG102 [43] phi from main::@15 to main::@16 [phi:main::@15->main::@16] + //SEG103 main::@16 + //SEG104 [44] call print_ln + //SEG105 [49] phi from main::@16 to print_ln [phi:main::@16->print_ln] jsr print_ln - //SEG108 main::@17 - //SEG109 [47] (dword) main::dw#1 ← ++ (dword) main::dw#10 -- vduz1=_inc_vduz1 + //SEG106 main::@17 + //SEG107 [45] (dword) main::dw#1 ← ++ (dword) main::dw#10 -- vduz1=_inc_vduz1 inc dw bne !+ inc dw+1 @@ -2800,7 +2737,7 @@ main: { bne !+ inc dw+3 !: - //SEG110 [48] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 -- vduz1_neq_vduc1_then_la1 + //SEG108 [46] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 -- vduz1_neq_vduc1_then_la1 lda dw+3 cmp #>$12345690>>$10 bne b18 @@ -2813,30 +2750,30 @@ main: { lda dw cmp #<$12345690 bne b18 - //SEG111 main::@return - //SEG112 [49] return + //SEG109 main::@return + //SEG110 [47] return rts - //SEG113 main::@18 + //SEG111 main::@18 b18: - //SEG114 [50] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG112 [48] (byte*~) print_char_cursor#72 ← (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 - //SEG115 [6] phi from main::@18 to main::@1 [phi:main::@18->main::@1] - //SEG116 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@18->main::@1#0] -- register_copy - //SEG117 [6] phi (byte*) print_char_cursor#69 = (byte*~) print_char_cursor#72 [phi:main::@18->main::@1#1] -- register_copy - //SEG118 [6] phi (dword) main::dw#10 = (dword) main::dw#1 [phi:main::@18->main::@1#2] -- register_copy + //SEG113 [6] phi from main::@18 to main::@1 [phi:main::@18->main::@1] + //SEG114 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@18->main::@1#0] -- register_copy + //SEG115 [6] phi (byte*) print_char_cursor#69 = (byte*~) print_char_cursor#72 [phi:main::@18->main::@1#1] -- register_copy + //SEG116 [6] phi (dword) main::dw#10 = (dword) main::dw#1 [phi:main::@18->main::@1#2] -- register_copy jmp b1 } -//SEG119 print_ln +//SEG117 print_ln // Print a newline print_ln: { - //SEG120 [52] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] - //SEG121 [52] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy - //SEG122 print_ln::@1 + //SEG118 [50] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG119 [50] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG120 print_ln::@1 b1: - //SEG123 [53] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG121 [51] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -2844,7 +2781,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG124 [54] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG122 [52] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -2853,148 +2790,148 @@ print_ln: { cmp print_char_cursor bcc b1 !: - //SEG125 print_ln::@return - //SEG126 [55] return + //SEG123 print_ln::@return + //SEG124 [53] return rts } -//SEG127 print_byte +//SEG125 print_byte // Print a byte as HEX // print_byte(byte register(X) b) print_byte: { - //SEG128 [57] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG126 [55] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG129 [58] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG127 [56] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG130 [59] call print_char - //SEG131 [64] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG132 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#67 [phi:print_byte->print_char#0] -- register_copy - //SEG133 [64] phi (byte) print_char::ch#8 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG128 [57] call print_char + //SEG129 [62] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG130 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#67 [phi:print_byte->print_char#0] -- register_copy + //SEG131 [62] phi (byte) print_char::ch#8 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG134 print_byte::@1 - //SEG135 [60] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG132 print_byte::@1 + //SEG133 [58] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG136 [61] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG134 [59] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG137 [62] call print_char - //SEG138 [64] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG139 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG140 [64] phi (byte) print_char::ch#8 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG135 [60] call print_char + //SEG136 [62] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG137 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG138 [62] phi (byte) print_char::ch#8 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG141 print_byte::@return - //SEG142 [63] return + //SEG139 print_byte::@return + //SEG140 [61] return rts } -//SEG143 print_char +//SEG141 print_char // Print a single char // print_char(byte register(A) ch) print_char: { - //SEG144 [65] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 -- _deref_pbuz1=vbuaa + //SEG142 [63] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG145 [66] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 -- pbuz1=_inc_pbuz1 + //SEG143 [64] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG146 print_char::@return - //SEG147 [67] return + //SEG144 print_char::@return + //SEG145 [65] return rts } -//SEG148 print_word +//SEG146 print_word // Print a word as HEX // print_word(word zeropage($a) w) print_word: { .label w = $a - //SEG149 [69] (byte) print_byte::b#0 ← > (word) print_word::w#4 -- vbuxx=_hi_vwuz1 + //SEG147 [67] (byte) print_byte::b#0 ← > (word) print_word::w#4 -- vbuxx=_hi_vwuz1 lda w+1 tax - //SEG150 [70] call print_byte - //SEG151 [56] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG152 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#65 [phi:print_word->print_byte#0] -- register_copy - //SEG153 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG148 [68] call print_byte + //SEG149 [54] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG150 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#65 [phi:print_word->print_byte#0] -- register_copy + //SEG151 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte - //SEG154 print_word::@1 - //SEG155 [71] (byte) print_byte::b#1 ← < (word) print_word::w#4 -- vbuxx=_lo_vwuz1 + //SEG152 print_word::@1 + //SEG153 [69] (byte) print_byte::b#1 ← < (word) print_word::w#4 -- vbuxx=_lo_vwuz1 lda w tax - //SEG156 [72] call print_byte - //SEG157 [56] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG158 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG159 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG154 [70] call print_byte + //SEG155 [54] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG156 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG157 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte - //SEG160 print_word::@return - //SEG161 [73] return + //SEG158 print_word::@return + //SEG159 [71] return rts } -//SEG162 print_dword +//SEG160 print_dword // Print a dword as HEX // print_dword(dword zeropage($c) dw) print_dword: { .label dw = $c - //SEG163 [74] (word) print_word::w#0 ← > (dword) print_dword::dw#0 -- vwuz1=_hi_vduz2 + //SEG161 [72] (word) print_word::w#0 ← > (dword) print_dword::dw#0 -- vwuz1=_hi_vduz2 lda dw+2 sta print_word.w lda dw+3 sta print_word.w+1 - //SEG164 [75] call print_word - //SEG165 [68] phi from print_dword to print_word [phi:print_dword->print_word] - //SEG166 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#69 [phi:print_dword->print_word#0] -- register_copy - //SEG167 [68] phi (word) print_word::w#4 = (word) print_word::w#0 [phi:print_dword->print_word#1] -- register_copy + //SEG162 [73] call print_word + //SEG163 [66] phi from print_dword to print_word [phi:print_dword->print_word] + //SEG164 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#69 [phi:print_dword->print_word#0] -- register_copy + //SEG165 [66] phi (word) print_word::w#4 = (word) print_word::w#0 [phi:print_dword->print_word#1] -- register_copy jsr print_word - //SEG168 print_dword::@1 - //SEG169 [76] (word) print_word::w#1 ← < (dword) print_dword::dw#0 -- vwuz1=_lo_vduz2 + //SEG166 print_dword::@1 + //SEG167 [74] (word) print_word::w#1 ← < (dword) print_dword::dw#0 -- vwuz1=_lo_vduz2 lda dw sta print_word.w lda dw+1 sta print_word.w+1 - //SEG170 [77] call print_word - //SEG171 [68] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] - //SEG172 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:print_dword::@1->print_word#0] -- register_copy - //SEG173 [68] phi (word) print_word::w#4 = (word) print_word::w#1 [phi:print_dword::@1->print_word#1] -- register_copy + //SEG168 [75] call print_word + //SEG169 [66] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] + //SEG170 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:print_dword::@1->print_word#0] -- register_copy + //SEG171 [66] phi (word) print_word::w#4 = (word) print_word::w#1 [phi:print_dword::@1->print_word#1] -- register_copy jsr print_word - //SEG174 print_dword::@return - //SEG175 [78] return + //SEG172 print_dword::@return + //SEG173 [76] return rts } -//SEG176 print_cls +//SEG174 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 6 - //SEG177 [80] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG178 [80] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG175 [78] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG176 [78] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - //SEG179 [80] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG180 [80] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG181 print_cls::@1 + //SEG177 [78] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG178 [78] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG179 print_cls::@1 b1: - //SEG182 [81] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG180 [79] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG183 [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG181 [80] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG184 [83] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG182 [81] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 lda sc cmp #<$400+$3e8 bne b1 - //SEG185 print_cls::@return - //SEG186 [84] return + //SEG183 print_cls::@return + //SEG184 [82] return rts } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/test-lowhigh.sym b/src/test/ref/test-lowhigh.sym index 6a5a3c38d..3723e15dd 100644 --- a/src/test/ref/test-lowhigh.sym +++ b/src/test/ref/test-lowhigh.sym @@ -2,7 +2,6 @@ (label) @begin (label) @end (void()) main() -(word~) main::$1 $1 zp ZP_WORD:6 110.0 (word~) main::$15 $15 zp ZP_WORD:10 22.0 (word~) main::$19 $19 zp ZP_WORD:10 22.0 (word~) main::$2 $2 zp ZP_WORD:10 22.0 @@ -10,7 +9,6 @@ (word~) main::$27 $27 zp ZP_WORD:10 22.0 (word/signed dword/dword~) main::$32 $32 zp ZP_WORD:10 22.0 (word/signed dword/dword~) main::$33 $33 zp ZP_WORD:10 22.0 -(word~) main::$4 $4 zp ZP_WORD:6 110.0 (word~) main::$5 $5 zp ZP_WORD:10 22.0 (label) main::@1 (label) main::@10 @@ -31,9 +29,9 @@ (label) main::@return (dword) main::dw (dword) main::dw#1 dw zp ZP_DWORD:2 11.0 -(dword) main::dw#10 dw zp ZP_DWORD:2 1.6097560975609757 +(dword) main::dw#10 dw zp ZP_DWORD:2 1.4102564102564101 (dword) main::dw2 -(dword) main::dw2#1 dw2 zp ZP_DWORD:12 8.25 +(dword) main::dw2#1 dw2 zp ZP_DWORD:12 7.333333333333333 (dword) main::dw2#10 dw2 zp ZP_DWORD:12 3.142857142857143 (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 reg byte a 4.0 @@ -59,7 +57,7 @@ (byte*) print_char_cursor#44 print_char_cursor zp ZP_WORD:8 37.0 (byte*) print_char_cursor#65 print_char_cursor zp ZP_WORD:8 14.0 (byte*) print_char_cursor#67 print_char_cursor zp ZP_WORD:8 16.666666666666664 -(byte*) print_char_cursor#69 print_char_cursor zp ZP_WORD:8 1.1818181818181819 +(byte*) print_char_cursor#69 print_char_cursor zp ZP_WORD:8 1.4444444444444446 (byte*~) print_char_cursor#72 print_char_cursor zp ZP_WORD:8 22.0 (void()) print_cls() (label) print_cls::@1 @@ -76,7 +74,7 @@ (const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:6 46.42857142857143 -(byte*) print_line_cursor#19 print_line_cursor zp ZP_WORD:6 0.3170731707317073 +(byte*) print_line_cursor#19 print_line_cursor zp ZP_WORD:6 0.3333333333333333 (byte*) print_line_cursor#9 print_line_cursor zp ZP_WORD:6 204.0 (void()) print_ln() (label) print_ln::@1 @@ -93,7 +91,7 @@ (word) print_word::w#4 w zp ZP_WORD:10 9.999999999999998 zp ZP_DWORD:2 [ main::dw#10 main::dw#1 ] -zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 main::$1 main::$4 ] +zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 ] reg byte x [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#8 print_char::ch#0 print_char::ch#1 ] zp ZP_WORD:8 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] diff --git a/src/test/ref/test-multiply-16bit.asm b/src/test/ref/test-multiply-16bit.asm index 92e99b9dd..1448cab00 100644 --- a/src/test/ref/test-multiply-16bit.asm +++ b/src/test/ref/test-multiply-16bit.asm @@ -341,9 +341,7 @@ print_sword: { // Fixes offsets introduced by using unsigned multiplication // mulf16s(signed word zeropage(3) a, signed word zeropage(5) b) mulf16s: { - .label _5 = 3 .label _6 = 9 - .label _11 = 3 .label _12 = 9 .label _16 = 9 .label _17 = 9 @@ -363,10 +361,6 @@ mulf16s: { lda a+1 bpl b1 lda m+2 - sta _5 - lda m+3 - sta _5+1 - lda m+2 sta _6 lda m+3 sta _6+1 @@ -385,10 +379,6 @@ mulf16s: { lda b+1 bpl b2 lda m+2 - sta _11 - lda m+3 - sta _11+1 - lda m+2 sta _12 lda m+3 sta _12+1 @@ -530,9 +520,7 @@ mulf16u: { // Fixes offsets introduced by using unsigned multiplication // mul16s(signed word zeropage(3) a, signed word zeropage(5) b) mul16s: { - .label _5 = 3 .label _6 = 9 - .label _11 = 3 .label _12 = 9 .label _16 = 9 .label _17 = 9 @@ -552,10 +540,6 @@ mul16s: { lda a+1 bpl b1 lda m+2 - sta _5 - lda m+3 - sta _5+1 - lda m+2 sta _6 lda m+3 sta _6+1 @@ -574,10 +558,6 @@ mul16s: { lda b+1 bpl b2 lda m+2 - sta _11 - lda m+3 - sta _11+1 - lda m+2 sta _12 lda m+3 sta _12+1 diff --git a/src/test/ref/test-multiply-16bit.cfg b/src/test/ref/test-multiply-16bit.cfg index 8cff2c457..f2ea6e3c9 100644 --- a/src/test/ref/test-multiply-16bit.cfg +++ b/src/test/ref/test-multiply-16bit.cfg @@ -288,336 +288,332 @@ mulf16s::@6: scope:[mulf16s] from mulf16s [141] if((signed word) mulf16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@1 to:mulf16s::@3 mulf16s::@3: scope:[mulf16s] from mulf16s::@6 - [142] (word~) mulf16s::$5 ← > (dword) mulf16s::m#0 - [143] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 - [144] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 - [145] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 + [142] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 + [143] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 + [144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 to:mulf16s::@1 mulf16s::@1: scope:[mulf16s] from mulf16s::@3 mulf16s::@6 - [146] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@6/(dword) mulf16s::m#0 ) - [147] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 + [145] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@6/(dword) mulf16s::m#0 ) + [146] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 to:mulf16s::@4 mulf16s::@4: scope:[mulf16s] from mulf16s::@1 - [148] (word~) mulf16s::$11 ← > (dword) mulf16s::m#5 - [149] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 - [150] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 - [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 + [147] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 + [148] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 + [149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 to:mulf16s::@2 mulf16s::@2: scope:[mulf16s] from mulf16s::@1 mulf16s::@4 - [152] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 ) - [153] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 + [150] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 ) + [151] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 to:mulf16s::@return mulf16s::@return: scope:[mulf16s] from mulf16s::@2 - [154] return + [152] return to:@return mulf16u: scope:[mulf16u] from mul16u_compare::@14 mulf16s - [155] (word) mulf16u::b#2 ← phi( mul16u_compare::@14/(word) mulf16u::b#1 mulf16s/(word~) mulf16u::b#4 ) - [155] (word) mulf16u::a#2 ← phi( mul16u_compare::@14/(word) mulf16u::a#1 mulf16s/(word~) mulf16u::a#4 ) - [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 - [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 + [153] (word) mulf16u::b#2 ← phi( mul16u_compare::@14/(word) mulf16u::b#1 mulf16s/(word~) mulf16u::b#4 ) + [153] (word) mulf16u::a#2 ← phi( mul16u_compare::@14/(word) mulf16u::a#1 mulf16s/(word~) mulf16u::a#4 ) + [154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 + [155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } - [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) + [157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) to:mulf16u::@return mulf16u::@return: scope:[mulf16u] from mulf16u - [160] return + [158] return to:@return mul16s: scope:[mul16s] from mul16s_compare::@13 - [161] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 - [162] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 - [163] call mul16u - [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + [159] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 + [160] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 + [161] call mul16u + [162] (dword) mul16u::return#2 ← (dword) mul16u::res#2 to:mul16s::@6 mul16s::@6: scope:[mul16s] from mul16s - [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - [166] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 + [163] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + [164] 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::@6 - [167] (word~) mul16s::$5 ← > (dword) mul16s::m#0 - [168] (word~) mul16s::$6 ← > (dword) mul16s::m#0 - [169] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 - [170] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 + [165] (word~) mul16s::$6 ← > (dword) mul16s::m#0 + [166] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 + [167] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 to:mul16s::@1 mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@6 - [171] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) - [172] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 + [168] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) + [169] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 to:mul16s::@4 mul16s::@4: scope:[mul16s] from mul16s::@1 - [173] (word~) mul16s::$11 ← > (dword) mul16s::m#5 - [174] (word~) mul16s::$12 ← > (dword) mul16s::m#5 - [175] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 - [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 + [170] (word~) mul16s::$12 ← > (dword) mul16s::m#5 + [171] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 + [172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 to:mul16s::@2 mul16s::@2: scope:[mul16s] from mul16s::@1 mul16s::@4 - [177] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 ) - [178] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 + [173] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 ) + [174] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 to:mul16s::@return mul16s::@return: scope:[mul16s] from mul16s::@2 - [179] return + [175] return to:@return mul16u: scope:[mul16u] from mul16s mul16u_compare::@13 - [180] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mul16u_compare::@13/(word) mul16u::a#2 ) - [180] (word) mul16u::b#2 ← phi( mul16s/(word~) mul16u::b#3 mul16u_compare::@13/(word) mul16u::b#1 ) - [181] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 + [176] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mul16u_compare::@13/(word) mul16u::a#2 ) + [176] (word) mul16u::b#2 ← phi( mul16s/(word~) mul16u::b#3 mul16u_compare::@13/(word) mul16u::b#1 ) + [177] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@4 - [182] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) - [182] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) - [182] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) - [183] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 + [178] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) + [178] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) + [178] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) + [179] 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 - [184] return + [180] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [185] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [186] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 + [181] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [182] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 to:mul16u::@7 mul16u::@7: scope:[mul16u] from mul16u::@2 - [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [183] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7 - [188] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) - [189] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [190] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [184] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) + [185] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [186] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:mul16u::@1 muls16s: scope:[muls16s] from mul16s_compare::@2 - [191] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 + [187] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 to:muls16s::@6 muls16s::@6: scope:[muls16s] from muls16s - [192] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 + [188] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 to:muls16s::@3 muls16s::@3: scope:[muls16s] from muls16s::@3 muls16s::@6 - [193] (signed word) muls16s::j#2 ← phi( muls16s::@3/(signed word) muls16s::j#1 muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [193] (signed dword) muls16s::m#3 ← phi( muls16s::@3/(signed dword) muls16s::m#1 muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [194] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 - [195] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 - [196] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 + [189] (signed word) muls16s::j#2 ← phi( muls16s::@3/(signed word) muls16s::j#1 muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [189] (signed dword) muls16s::m#3 ← phi( muls16s::@3/(signed dword) muls16s::m#1 muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [190] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 + [191] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 + [192] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 to:muls16s::@4 muls16s::@4: scope:[muls16s] from muls16s::@3 muls16s::@5 muls16s::@6 - [197] (signed dword) muls16s::return#0 ← phi( muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@3/(signed dword) muls16s::m#1 muls16s::@5/(signed dword) muls16s::m#2 ) + [193] (signed dword) muls16s::return#0 ← phi( muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@3/(signed dword) muls16s::m#1 muls16s::@5/(signed dword) muls16s::m#2 ) to:muls16s::@return muls16s::@return: scope:[muls16s] from muls16s::@4 - [198] return + [194] return to:@return muls16s::@5: scope:[muls16s] from muls16s muls16s::@5 - [199] (signed word) muls16s::i#2 ← phi( muls16s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@5/(signed word) muls16s::i#1 ) - [199] (signed dword) muls16s::m#5 ← phi( muls16s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@5/(signed dword) muls16s::m#2 ) - [200] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 - [201] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 - [202] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 + [195] (signed word) muls16s::i#2 ← phi( muls16s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@5/(signed word) muls16s::i#1 ) + [195] (signed dword) muls16s::m#5 ← phi( muls16s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@5/(signed dword) muls16s::m#2 ) + [196] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 + [197] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 + [198] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 to:muls16s::@4 mul16u_compare: scope:[mul16u_compare] from main::@2 - [203] phi() + [199] phi() to:mul16u_compare::@1 mul16u_compare::@1: scope:[mul16u_compare] from mul16u_compare mul16u_compare::@10 - [204] (byte) mul16u_compare::i#12 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(byte) mul16u_compare::i#1 ) - [204] (word) mul16u_compare::b#6 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(word) mul16u_compare::b#1 ) - [204] (word) mul16u_compare::a#6 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(word) mul16u_compare::a#1 ) - [204] (byte*) print_char_cursor#139 ← phi( mul16u_compare/((byte*))(word/signed word/dword/signed dword) 1024 mul16u_compare::@10/(byte*) print_char_cursor#128 ) - [205] call print_str + [200] (byte) mul16u_compare::i#12 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(byte) mul16u_compare::i#1 ) + [200] (word) mul16u_compare::b#6 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(word) mul16u_compare::b#1 ) + [200] (word) mul16u_compare::a#6 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(word) mul16u_compare::a#1 ) + [200] (byte*) print_char_cursor#139 ← phi( mul16u_compare/((byte*))(word/signed word/dword/signed dword) 1024 mul16u_compare::@10/(byte*) print_char_cursor#128 ) + [201] call print_str to:mul16u_compare::@2 mul16u_compare::@2: scope:[mul16u_compare] from mul16u_compare::@1 mul16u_compare::@5 - [206] (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@5/(byte) mul16u_compare::j#1 ) - [206] (word) mul16u_compare::b#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#1 ) - [206] (word) mul16u_compare::a#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#6 mul16u_compare::@5/(word) mul16u_compare::a#1 ) - [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 - [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 - [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 - [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 - [211] call muls16u - [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 + [202] (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@5/(byte) mul16u_compare::j#1 ) + [202] (word) mul16u_compare::b#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#1 ) + [202] (word) mul16u_compare::a#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#6 mul16u_compare::@5/(word) mul16u_compare::a#1 ) + [203] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 + [204] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 + [205] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 + [206] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 + [207] call muls16u + [208] (dword) muls16u::return#2 ← (dword) muls16u::return#0 to:mul16u_compare::@13 mul16u_compare::@13: scope:[mul16u_compare] from mul16u_compare::@2 - [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 - [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 - [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 - [216] call mul16u - [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + [209] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 + [210] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 + [211] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 + [212] call mul16u + [213] (dword) mul16u::return#3 ← (dword) mul16u::res#2 to:mul16u_compare::@14 mul16u_compare::@14: scope:[mul16u_compare] from mul16u_compare::@13 - [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 - [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 - [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 - [221] call mulf16u - [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 + [214] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 + [215] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 + [216] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 + [217] call mulf16u + [218] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 to:mul16u_compare::@15 mul16u_compare::@15: scope:[mul16u_compare] from mul16u_compare::@14 - [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 - [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 + [219] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 + [220] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 to:mul16u_compare::@6 mul16u_compare::@6: scope:[mul16u_compare] from mul16u_compare::@15 - [225] phi() + [221] phi() to:mul16u_compare::@3 mul16u_compare::@3: scope:[mul16u_compare] from mul16u_compare::@15 mul16u_compare::@6 - [226] (byte) mul16u_compare::ok#4 ← phi( mul16u_compare::@15/(byte/signed byte/word/signed word/dword/signed dword) 1 mul16u_compare::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 + [222] (byte) mul16u_compare::ok#4 ← phi( mul16u_compare::@15/(byte/signed byte/word/signed word/dword/signed dword) 1 mul16u_compare::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [223] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 to:mul16u_compare::@4 mul16u_compare::@4: scope:[mul16u_compare] from mul16u_compare::@22 mul16u_compare::@3 - [228] (byte) mul16u_compare::ok#3 ← phi( mul16u_compare::@22/(byte) mul16u_compare::ok#4 mul16u_compare::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [229] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5 + [224] (byte) mul16u_compare::ok#3 ← phi( mul16u_compare::@22/(byte) mul16u_compare::ok#4 mul16u_compare::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [225] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5 to:mul16u_compare::@8 mul16u_compare::@8: scope:[mul16u_compare] from mul16u_compare::@4 - [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 - [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 - [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 - [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 - [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 - [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 - [236] call mul16u_error + [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 + [227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 + [228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 + [229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 + [230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 + [231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 + [232] call mul16u_error to:mul16u_compare::@return mul16u_compare::@return: scope:[mul16u_compare] from mul16u_compare::@18 mul16u_compare::@8 - [237] return + [233] return to:@return mul16u_compare::@5: scope:[mul16u_compare] from mul16u_compare::@4 - [238] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 - [239] if((byte) mul16u_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@2 + [234] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 + [235] if((byte) mul16u_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@2 to:mul16u_compare::@10 mul16u_compare::@10: scope:[mul16u_compare] from mul16u_compare::@5 - [240] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 - [241] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 + [236] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 + [237] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 to:mul16u_compare::@11 mul16u_compare::@11: scope:[mul16u_compare] from mul16u_compare::@10 - [242] phi() - [243] call print_ln + [238] phi() + [239] call print_ln to:mul16u_compare::@17 mul16u_compare::@17: scope:[mul16u_compare] from mul16u_compare::@11 - [244] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 - [245] call print_str + [240] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 + [241] call print_str to:mul16u_compare::@18 mul16u_compare::@18: scope:[mul16u_compare] from mul16u_compare::@17 - [246] phi() - [247] call print_ln + [242] phi() + [243] call print_ln to:mul16u_compare::@return mul16u_compare::@22: scope:[mul16u_compare] from mul16u_compare::@3 - [248] phi() + [244] phi() to:mul16u_compare::@4 mul16u_error: scope:[mul16u_error] from mul16u_compare::@8 - [249] phi() - [250] call print_str + [245] phi() + [246] call print_str to:mul16u_error::@1 mul16u_error::@1: scope:[mul16u_error] from mul16u_error - [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 - [252] call print_word + [247] (word) print_word::w#3 ← (word) mul16u_error::a#0 + [248] call print_word to:mul16u_error::@2 mul16u_error::@2: scope:[mul16u_error] from mul16u_error::@1 - [253] phi() - [254] call print_str + [249] phi() + [250] call print_str to:mul16u_error::@3 mul16u_error::@3: scope:[mul16u_error] from mul16u_error::@2 - [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 - [256] call print_word + [251] (word) print_word::w#4 ← (word) mul16u_error::b#0 + [252] call print_word to:mul16u_error::@4 mul16u_error::@4: scope:[mul16u_error] from mul16u_error::@3 - [257] phi() - [258] call print_str + [253] phi() + [254] call print_str to:mul16u_error::@5 mul16u_error::@5: scope:[mul16u_error] from mul16u_error::@4 - [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 - [260] call print_dword + [255] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 + [256] call print_dword to:mul16u_error::@6 mul16u_error::@6: scope:[mul16u_error] from mul16u_error::@5 - [261] phi() - [262] call print_str + [257] phi() + [258] call print_str to:mul16u_error::@7 mul16u_error::@7: scope:[mul16u_error] from mul16u_error::@6 - [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 - [264] call print_dword + [259] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 + [260] call print_dword to:mul16u_error::@8 mul16u_error::@8: scope:[mul16u_error] from mul16u_error::@7 - [265] phi() - [266] call print_str + [261] phi() + [262] call print_str to:mul16u_error::@9 mul16u_error::@9: scope:[mul16u_error] from mul16u_error::@8 - [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 - [268] call print_dword + [263] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 + [264] call print_dword to:mul16u_error::@10 mul16u_error::@10: scope:[mul16u_error] from mul16u_error::@9 - [269] phi() - [270] call print_ln + [265] phi() + [266] call print_ln to:mul16u_error::@return mul16u_error::@return: scope:[mul16u_error] from mul16u_error::@10 - [271] return + [267] return to:@return muls16u: scope:[muls16u] from mul16u_compare::@2 - [272] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 + [268] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 to:muls16u::@2 muls16u::@2: scope:[muls16u] from muls16u muls16u::@2 - [273] (word) muls16u::i#2 ← phi( muls16u::@2/(word) muls16u::i#1 muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [273] (dword) muls16u::m#3 ← phi( muls16u::@2/(dword) muls16u::m#1 muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [274] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 - [275] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 - [276] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 + [269] (word) muls16u::i#2 ← phi( muls16u::@2/(word) muls16u::i#1 muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [269] (dword) muls16u::m#3 ← phi( muls16u::@2/(dword) muls16u::m#1 muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [270] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 + [271] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 + [272] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 to:muls16u::@1 muls16u::@1: scope:[muls16u] from muls16u muls16u::@2 - [277] (dword) muls16u::return#0 ← phi( muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16u::@2/(dword) muls16u::m#1 ) + [273] (dword) muls16u::return#0 ← phi( muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16u::@2/(dword) muls16u::m#1 ) to:muls16u::@return muls16u::@return: scope:[muls16u] from muls16u::@1 - [278] return + [274] return to:@return mulf_init: scope:[mulf_init] from main::@1 - [279] phi() + [275] phi() to:mulf_init::@1 mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2 - [280] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) - [280] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) - [280] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) - [280] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) - [280] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) - [281] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 - [282] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [283] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 + [276] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) + [276] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) + [276] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) + [276] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) + [276] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) + [277] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 + [278] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [279] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 to:mulf_init::@5 mulf_init::@5: scope:[mulf_init] from mulf_init::@1 - [284] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 - [285] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 + [280] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 + [281] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 to:mulf_init::@2 mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@5 - [286] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) - [286] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) - [287] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 - [288] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 - [289] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 - [290] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 - [291] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 - [292] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 - [293] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 - [294] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 + [282] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) + [282] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) + [283] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 + [284] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 + [285] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 + [286] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 + [287] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 + [288] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 + [289] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 + [290] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 to:mulf_init::@3 mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4 - [295] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) - [295] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) - [295] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) - [295] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [296] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) - [297] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) - [298] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 - [299] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 - [300] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 + [291] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) + [291] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) + [291] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) + [291] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [292] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) + [293] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) + [294] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 + [295] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 + [296] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 to:mulf_init::@4 mulf_init::@4: scope:[mulf_init] from mulf_init::@12 mulf_init::@3 - [301] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [302] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 - [303] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 + [297] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [298] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 + [299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 to:mulf_init::@8 mulf_init::@8: scope:[mulf_init] from mulf_init::@4 - [304] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) - [305] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) + [300] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) + [301] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) to:mulf_init::@return mulf_init::@return: scope:[mulf_init] from mulf_init::@8 - [306] return + [302] return to:@return mulf_init::@12: scope:[mulf_init] from mulf_init::@3 - [307] phi() + [303] phi() to:mulf_init::@4 print_cls: scope:[print_cls] from main - [308] phi() + [304] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [309] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [310] *((byte*) print_cls::sc#2) ← (byte) ' ' - [311] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [312] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 + [305] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [306] *((byte*) print_cls::sc#2) ← (byte) ' ' + [307] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [308] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [313] return + [309] return to:@return diff --git a/src/test/ref/test-multiply-16bit.log b/src/test/ref/test-multiply-16bit.log index 2e6f40e91..2b99e17a0 100644 --- a/src/test/ref/test-multiply-16bit.log +++ b/src/test/ref/test-multiply-16bit.log @@ -316,7 +316,6 @@ mul16s::@3: scope:[mul16s] from mul16s::@6 (signed word) mul16s::a#5 ← phi( mul16s::@6/(signed word) mul16s::a#2 ) (signed word) mul16s::b#3 ← phi( mul16s::@6/(signed word) mul16s::b#4 ) (dword) mul16s::m#3 ← phi( mul16s::@6/(dword) mul16s::m#0 ) - (word~) mul16s::$5 ← > (dword) mul16s::m#3 (word~) mul16s::$6 ← > (dword) mul16s::m#3 (word~) mul16s::$7 ← ((word)) (signed word) mul16s::b#3 (word~) mul16s::$8 ← (word~) mul16s::$6 - (word~) mul16s::$7 @@ -331,7 +330,6 @@ mul16s::@2: scope:[mul16s] from mul16s::@1 mul16s::@4 mul16s::@4: scope:[mul16s] from mul16s::@1 (signed word) mul16s::a#3 ← phi( mul16s::@1/(signed word) mul16s::a#4 ) (dword) mul16s::m#5 ← phi( mul16s::@1/(dword) mul16s::m#6 ) - (word~) mul16s::$11 ← > (dword) mul16s::m#5 (word~) mul16s::$12 ← > (dword) mul16s::m#5 (word~) mul16s::$13 ← ((word)) (signed word) mul16s::a#3 (word~) mul16s::$14 ← (word~) mul16s::$12 - (word~) mul16s::$13 @@ -497,7 +495,6 @@ mulf16s::@3: scope:[mulf16s] from mulf16s::@6 (signed word) mulf16s::a#5 ← phi( mulf16s::@6/(signed word) mulf16s::a#2 ) (signed word) mulf16s::b#3 ← phi( mulf16s::@6/(signed word) mulf16s::b#4 ) (dword) mulf16s::m#3 ← phi( mulf16s::@6/(dword) mulf16s::m#0 ) - (word~) mulf16s::$5 ← > (dword) mulf16s::m#3 (word~) mulf16s::$6 ← > (dword) mulf16s::m#3 (word~) mulf16s::$7 ← ((word)) (signed word) mulf16s::b#3 (word~) mulf16s::$8 ← (word~) mulf16s::$6 - (word~) mulf16s::$7 @@ -512,7 +509,6 @@ mulf16s::@2: scope:[mulf16s] from mulf16s::@1 mulf16s::@4 mulf16s::@4: scope:[mulf16s] from mulf16s::@1 (signed word) mulf16s::a#3 ← phi( mulf16s::@1/(signed word) mulf16s::a#4 ) (dword) mulf16s::m#5 ← phi( mulf16s::@1/(dword) mulf16s::m#6 ) - (word~) mulf16s::$11 ← > (dword) mulf16s::m#5 (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 (word~) mulf16s::$13 ← ((word)) (signed word) mulf16s::a#3 (word~) mulf16s::$14 ← (word~) mulf16s::$12 - (word~) mulf16s::$13 @@ -1439,7 +1435,6 @@ SYMBOL TABLE SSA (word~) mul16s::$0 (word~) mul16s::$1 (bool~) mul16s::$10 -(word~) mul16s::$11 (word~) mul16s::$12 (word~) mul16s::$13 (word~) mul16s::$14 @@ -1449,7 +1444,6 @@ SYMBOL TABLE SSA (dword~) mul16s::$2 (bool~) mul16s::$3 (bool~) mul16s::$4 -(word~) mul16s::$5 (word~) mul16s::$6 (word~) mul16s::$7 (word~) mul16s::$8 @@ -1907,7 +1901,6 @@ SYMBOL TABLE SSA (word~) mulf16s::$0 (word~) mulf16s::$1 (bool~) mulf16s::$10 -(word~) mulf16s::$11 (word~) mulf16s::$12 (word~) mulf16s::$13 (word~) mulf16s::$14 @@ -1917,7 +1910,6 @@ SYMBOL TABLE SSA (dword~) mulf16s::$2 (bool~) mulf16s::$3 (bool~) mulf16s::$4 -(word~) mulf16s::$5 (word~) mulf16s::$6 (word~) mulf16s::$7 (word~) mulf16s::$8 @@ -2587,18 +2579,18 @@ Inversing boolean not [76] (bool~) print_sdword::$1 ← (signed dword) print_sdw Inversing boolean not [140] (bool~) mul16u::$3 ← (byte/word~) mul16u::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [139] (bool~) mul16u::$2 ← (byte/word~) mul16u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not [166] (bool~) mul16s::$4 ← (signed word) mul16s::a#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [165] (bool~) mul16s::$3 ← (signed word) mul16s::a#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not [170] (bool~) mul16s::$10 ← (signed word) mul16s::b#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [169] (bool~) mul16s::$9 ← (signed word) mul16s::b#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [208] (bool~) mulf_init::$4 ← (byte~) mulf_init::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [207] (bool~) mulf_init::$3 ← (byte~) mulf_init::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [238] (bool~) mulf_init::$14 ← (byte) mulf_init::x_255#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [237] (bool~) mulf_init::$13 ← (byte) mulf_init::x_255#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [276] (bool~) mulf16s::$4 ← (signed word) mulf16s::a#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [275] (bool~) mulf16s::$3 ← (signed word) mulf16s::a#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [280] (bool~) mulf16s::$10 ← (signed word) mulf16s::b#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [279] (bool~) mulf16s::$9 ← (signed word) mulf16s::b#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [327] (bool~) muls16u::$1 ← (word) muls16u::a#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [326] (bool~) muls16u::$0 ← (word) muls16u::a#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [350] (bool~) muls16s::$2 ← (signed word) muls16s::a#2 <= (byte/signed byte/word/signed word/dword/signed dword) 0 from [349] (bool~) muls16s::$1 ← (signed word) muls16s::a#2 > (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [410] (bool~) mul16u_compare::$7 ← (dword) mul16u_compare::ms#1 == (dword) mul16u_compare::mf#0 from [409] (bool~) mul16u_compare::$6 ← (dword) mul16u_compare::ms#1 != (dword) mul16u_compare::mf#0 -Inversing boolean not [414] (bool~) mul16u_compare::$9 ← (dword) mul16u_compare::ms#2 == (dword) mul16u_compare::mn#1 from [413] (bool~) mul16u_compare::$8 ← (dword) mul16u_compare::ms#2 != (dword) mul16u_compare::mn#1 -Inversing boolean not [420] (bool~) mul16u_compare::$11 ← (byte) mul16u_compare::ok#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [419] (bool~) mul16u_compare::$10 ← (byte) mul16u_compare::ok#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [549] (bool~) mul16s_compare::$9 ← (signed dword) mul16s_compare::ms#1 == (signed dword) mul16s_compare::mf#0 from [548] (bool~) mul16s_compare::$8 ← (signed dword) mul16s_compare::ms#1 != (signed dword) mul16s_compare::mf#0 -Inversing boolean not [553] (bool~) mul16s_compare::$11 ← (signed dword) mul16s_compare::ms#2 == (signed dword) mul16s_compare::mn#1 from [552] (bool~) mul16s_compare::$10 ← (signed dword) mul16s_compare::ms#2 != (signed dword) mul16s_compare::mn#1 -Inversing boolean not [559] (bool~) mul16s_compare::$13 ← (byte) mul16s_compare::ok#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [558] (bool~) mul16s_compare::$12 ← (byte) mul16s_compare::ok#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [206] (bool~) mulf_init::$4 ← (byte~) mulf_init::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [205] (bool~) mulf_init::$3 ← (byte~) mulf_init::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [236] (bool~) mulf_init::$14 ← (byte) mulf_init::x_255#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [235] (bool~) mulf_init::$13 ← (byte) mulf_init::x_255#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [274] (bool~) mulf16s::$4 ← (signed word) mulf16s::a#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [273] (bool~) mulf16s::$3 ← (signed word) mulf16s::a#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [278] (bool~) mulf16s::$10 ← (signed word) mulf16s::b#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [277] (bool~) mulf16s::$9 ← (signed word) mulf16s::b#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [323] (bool~) muls16u::$1 ← (word) muls16u::a#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [322] (bool~) muls16u::$0 ← (word) muls16u::a#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [346] (bool~) muls16s::$2 ← (signed word) muls16s::a#2 <= (byte/signed byte/word/signed word/dword/signed dword) 0 from [345] (bool~) muls16s::$1 ← (signed word) muls16s::a#2 > (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [406] (bool~) mul16u_compare::$7 ← (dword) mul16u_compare::ms#1 == (dword) mul16u_compare::mf#0 from [405] (bool~) mul16u_compare::$6 ← (dword) mul16u_compare::ms#1 != (dword) mul16u_compare::mf#0 +Inversing boolean not [410] (bool~) mul16u_compare::$9 ← (dword) mul16u_compare::ms#2 == (dword) mul16u_compare::mn#1 from [409] (bool~) mul16u_compare::$8 ← (dword) mul16u_compare::ms#2 != (dword) mul16u_compare::mn#1 +Inversing boolean not [416] (bool~) mul16u_compare::$11 ← (byte) mul16u_compare::ok#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [415] (bool~) mul16u_compare::$10 ← (byte) mul16u_compare::ok#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [545] (bool~) mul16s_compare::$9 ← (signed dword) mul16s_compare::ms#1 == (signed dword) mul16s_compare::mf#0 from [544] (bool~) mul16s_compare::$8 ← (signed dword) mul16s_compare::ms#1 != (signed dword) mul16s_compare::mf#0 +Inversing boolean not [549] (bool~) mul16s_compare::$11 ← (signed dword) mul16s_compare::ms#2 == (signed dword) mul16s_compare::mn#1 from [548] (bool~) mul16s_compare::$10 ← (signed dword) mul16s_compare::ms#2 != (signed dword) mul16s_compare::mn#1 +Inversing boolean not [555] (bool~) mul16s_compare::$13 ← (byte) mul16s_compare::ok#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [554] (bool~) mul16s_compare::$12 ← (byte) mul16s_compare::ok#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#71 (byte*) print_char_cursor#165 (byte*) print_screen#8 (byte*) print_line_cursor#62 (byte*) print_char_cursor#158 (byte*) print_screen#7 (byte*) print_line_cursor#61 (byte*) print_char_cursor#157 (byte*) print_screen#6 (byte*) print_line_cursor#54 (byte*) print_char_cursor#147 (byte*) print_screen#5 Alias (byte*) print_str::str#15 = (byte*) print_str::str#16 @@ -3002,28 +2994,28 @@ Simple Condition (bool~) mul16u::$0 [136] if((word) mul16u::a#3!=(byte/signed by Simple Condition (bool~) mul16u::$3 [141] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 Simple Condition (bool~) mul16s::$4 [167] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 Simple Condition (bool~) mul16s::$10 [171] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 -Simple Condition (bool~) mulf_init::$4 [209] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -Simple Condition (bool~) mulf_init::$9 [221] if((byte*) mulf_init::sqr1_lo#1!=(byte*~) mulf_init::$8) goto mulf_init::@1 -Simple Condition (bool~) mulf_init::$14 [239] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@4 -Simple Condition (bool~) mulf_init::$16 [244] if((byte*) mulf_init::sqr2_lo#1!=(byte*~) mulf_init::$15) goto mulf_init::@3 -Simple Condition (bool~) mulf16s::$4 [277] if((signed word) mulf16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@1 -Simple Condition (bool~) mulf16s::$10 [281] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 -Simple Condition (bool~) muls16u::$1 [328] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 -Simple Condition (bool~) muls16u::$3 [338] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -Simple Condition (bool~) muls16s::$0 [345] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@1 -Simple Condition (bool~) muls16s::$2 [351] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@2 -Simple Condition (bool~) muls16s::$4 [360] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -Simple Condition (bool~) muls16s::$6 [368] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 -Simple Condition (bool~) mul16u_compare::$7 [411] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -Simple Condition (bool~) mul16u_compare::$9 [415] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@4 -Simple Condition (bool~) mul16u_compare::$11 [421] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5 -Simple Condition (bool~) mul16u_compare::$13 [427] if((byte) mul16u_compare::j#1!=rangelast(0,15)) goto mul16u_compare::@2 -Simple Condition (bool~) mul16u_compare::$14 [446] if((byte) mul16u_compare::i#1!=rangelast(0,15)) goto mul16u_compare::@1 -Simple Condition (bool~) mul16s_compare::$9 [550] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 -Simple Condition (bool~) mul16s_compare::$11 [554] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@4 -Simple Condition (bool~) mul16s_compare::$13 [560] if((byte) mul16s_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s_compare::@5 -Simple Condition (bool~) mul16s_compare::$15 [566] if((byte) mul16s_compare::j#1!=rangelast(0,15)) goto mul16s_compare::@2 -Simple Condition (bool~) mul16s_compare::$16 [585] if((byte) mul16s_compare::i#1!=rangelast(0,15)) goto mul16s_compare::@1 +Simple Condition (bool~) mulf_init::$4 [207] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 +Simple Condition (bool~) mulf_init::$9 [219] if((byte*) mulf_init::sqr1_lo#1!=(byte*~) mulf_init::$8) goto mulf_init::@1 +Simple Condition (bool~) mulf_init::$14 [237] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@4 +Simple Condition (bool~) mulf_init::$16 [242] if((byte*) mulf_init::sqr2_lo#1!=(byte*~) mulf_init::$15) goto mulf_init::@3 +Simple Condition (bool~) mulf16s::$4 [275] if((signed word) mulf16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@1 +Simple Condition (bool~) mulf16s::$10 [279] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 +Simple Condition (bool~) muls16u::$1 [324] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 +Simple Condition (bool~) muls16u::$3 [334] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 +Simple Condition (bool~) muls16s::$0 [341] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@1 +Simple Condition (bool~) muls16s::$2 [347] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@2 +Simple Condition (bool~) muls16s::$4 [356] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 +Simple Condition (bool~) muls16s::$6 [364] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 +Simple Condition (bool~) mul16u_compare::$7 [407] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 +Simple Condition (bool~) mul16u_compare::$9 [411] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@4 +Simple Condition (bool~) mul16u_compare::$11 [417] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5 +Simple Condition (bool~) mul16u_compare::$13 [423] if((byte) mul16u_compare::j#1!=rangelast(0,15)) goto mul16u_compare::@2 +Simple Condition (bool~) mul16u_compare::$14 [442] if((byte) mul16u_compare::i#1!=rangelast(0,15)) goto mul16u_compare::@1 +Simple Condition (bool~) mul16s_compare::$9 [546] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mf#0) goto mul16s_compare::@3 +Simple Condition (bool~) mul16s_compare::$11 [550] if((signed dword) mul16s_compare::ms#0==(signed dword) mul16s_compare::mn#0) goto mul16s_compare::@4 +Simple Condition (bool~) mul16s_compare::$13 [556] if((byte) mul16s_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s_compare::@5 +Simple Condition (bool~) mul16s_compare::$15 [562] if((byte) mul16s_compare::j#1!=rangelast(0,15)) goto mul16s_compare::@2 +Simple Condition (bool~) mul16s_compare::$16 [581] if((byte) mul16s_compare::i#1!=rangelast(0,15)) goto mul16s_compare::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) print_line_cursor#0 = ((byte*))1024 Constant (const byte) print_char::ch#0 = '-' @@ -3314,9 +3306,9 @@ Calls in [print_word] to print_byte:148 print_byte:152 Calls in [print_byte] to print_char:159 print_char:164 Calls in [print_sword] to print_char:173 print_word:180 Calls in [mulf16s] to mulf16u:186 -Calls in [mul16s] to mul16u:215 -Calls in [mul16u_compare] to print_str:275 muls16u:283 mul16u:290 mulf16u:297 mul16u_error:313 print_ln:320 print_str:322 print_ln:325 -Calls in [mul16u_error] to print_str:335 print_word:339 print_str:341 print_word:345 print_str:347 print_dword:351 print_str:353 print_dword:357 print_str:359 print_dword:363 print_ln:365 +Calls in [mul16s] to mul16u:213 +Calls in [mul16u_compare] to print_str:271 muls16u:279 mul16u:286 mulf16u:293 mul16u_error:309 print_ln:316 print_str:318 print_ln:321 +Calls in [mul16u_error] to print_str:331 print_word:335 print_str:337 print_word:341 print_str:343 print_dword:347 print_str:349 print_dword:353 print_str:355 print_dword:359 print_ln:361 Created 72 initial phi equivalence classes Not coalescing [13] print_char_cursor#176 ← print_line_cursor#1 @@ -3379,80 +3371,80 @@ Coalesced [176] print_char_cursor#218 ← print_char_cursor#20 Coalesced (already) [179] print_char_cursor#210 ← print_char_cursor#130 Coalesced [182] print_sword::w#9 ← print_sword::w#3 Coalesced (already) [183] print_char_cursor#217 ← print_char_cursor#128 -Coalesced [194] mulf16s::m#7 ← mulf16s::m#1 -Coalesced [201] mulf16s::m#10 ← mulf16s::m#2 -Coalesced [205] mulf16s::m#9 ← mulf16s::m#5 -Coalesced [206] mulf16s::m#8 ← mulf16s::m#0 -Coalesced [223] mul16s::m#7 ← mul16s::m#1 -Coalesced [230] mul16s::m#10 ← mul16s::m#2 -Coalesced [234] mul16s::m#9 ← mul16s::m#5 -Coalesced [235] mul16s::m#8 ← mul16s::m#0 -Coalesced [238] mul16u::a#10 ← mul16u::a#6 -Coalesced [239] mul16u::mb#6 ← mul16u::mb#0 -Coalesced [246] mul16u::res#9 ← mul16u::res#1 -Coalesced [250] mul16u::a#11 ← mul16u::a#0 -Coalesced [251] mul16u::res#7 ← mul16u::res#6 -Coalesced [252] mul16u::mb#7 ← mul16u::mb#1 -Coalesced (already) [253] mul16u::res#8 ← mul16u::res#2 -Coalesced [260] muls16s::return#5 ← muls16s::m#1 -Coalesced [263] muls16s::m#10 ← muls16s::m#1 -Coalesced [264] muls16s::j#3 ← muls16s::j#1 -Coalesced [269] muls16s::return#6 ← muls16s::m#2 -Coalesced [270] muls16s::m#11 ← muls16s::m#2 -Coalesced [271] muls16s::i#3 ← muls16s::i#1 -Coalesced [274] print_char_cursor#191 ← print_char_cursor#139 -Coalesced [276] mul16u_compare::a#16 ← mul16u_compare::a#6 -Coalesced [277] mul16u_compare::b#16 ← mul16u_compare::b#6 -Coalesced [288] mul16u::b#4 ← mul16u::b#1 -Coalesced [289] mul16u::a#9 ← mul16u::a#2 -Coalesced [295] mulf16u::a#3 ← mulf16u::a#1 -Coalesced [296] mulf16u::b#3 ← mulf16u::b#1 -Coalesced (already) [319] print_char_cursor#181 ← print_char_cursor#128 -Not coalescing [321] print_char_cursor#192 ← print_line_cursor#1 -Coalesced (already) [323] print_line_cursor#107 ← print_line_cursor#1 -Coalesced (already) [324] print_char_cursor#182 ← print_char_cursor#128 -Coalesced (already) [326] print_char_cursor#219 ← print_char_cursor#128 -Coalesced [327] mul16u_compare::a#15 ← mul16u_compare::a#1 -Coalesced [328] mul16u_compare::b#15 ← mul16u_compare::b#1 -Coalesced [329] mul16u_compare::i#14 ← mul16u_compare::i#1 -Coalesced (already) [330] mul16u_compare::a#17 ← mul16u_compare::a#1 -Coalesced (already) [331] mul16u_compare::b#17 ← mul16u_compare::b#1 -Coalesced [332] mul16u_compare::j#11 ← mul16u_compare::j#1 -Coalesced [333] mul16u_compare::ok#5 ← mul16u_compare::ok#4 -Coalesced (already) [334] print_char_cursor#193 ← print_char_cursor#128 -Coalesced [337] print_word::w#7 ← print_word::w#3 -Coalesced (already) [338] print_char_cursor#206 ← print_char_cursor#128 -Coalesced (already) [340] print_char_cursor#194 ← print_char_cursor#20 -Coalesced [343] print_word::w#8 ← print_word::w#4 -Coalesced (already) [344] print_char_cursor#207 ← print_char_cursor#128 -Coalesced (already) [346] print_char_cursor#195 ← print_char_cursor#20 -Coalesced [349] print_dword::dw#6 ← print_dword::dw#1 -Coalesced (already) [350] print_char_cursor#202 ← print_char_cursor#128 -Coalesced (already) [352] print_char_cursor#196 ← print_char_cursor#20 -Coalesced [355] print_dword::dw#7 ← print_dword::dw#2 -Coalesced (already) [356] print_char_cursor#203 ← print_char_cursor#128 -Coalesced (already) [358] print_char_cursor#197 ← print_char_cursor#20 -Coalesced [361] print_dword::dw#8 ← print_dword::dw#3 -Coalesced (already) [362] print_char_cursor#204 ← print_char_cursor#128 -Coalesced (already) [364] print_char_cursor#183 ← print_char_cursor#20 -Coalesced [372] muls16u::return#5 ← muls16u::m#1 -Coalesced [375] muls16u::m#5 ← muls16u::m#1 -Coalesced [376] muls16u::i#3 ← muls16u::i#1 -Coalesced [384] mulf_init::sqr#8 ← mulf_init::sqr#2 -Coalesced [385] mulf_init::x_2#7 ← mulf_init::x_2#1 -Coalesced [408] mulf_init::x_255#5 ← mulf_init::x_255#1 -Coalesced [409] mulf_init::sqr2_lo#5 ← mulf_init::sqr2_lo#1 -Coalesced [410] mulf_init::sqr2_hi#5 ← mulf_init::sqr2_hi#1 -Coalesced [411] mulf_init::dir#4 ← mulf_init::dir#3 -Coalesced (already) [412] mulf_init::dir#5 ← mulf_init::dir#2 -Coalesced [413] mulf_init::c#5 ← mulf_init::c#1 -Coalesced [414] mulf_init::sqr#6 ← mulf_init::sqr#1 -Coalesced [415] mulf_init::sqr1_lo#5 ← mulf_init::sqr1_lo#1 -Coalesced [416] mulf_init::sqr1_hi#5 ← mulf_init::sqr1_hi#1 -Coalesced [417] mulf_init::x_2#5 ← mulf_init::x_2#2 -Coalesced [418] mulf_init::sqr#7 ← mulf_init::sqr#4 -Coalesced (already) [419] mulf_init::x_2#6 ← mulf_init::x_2#3 -Coalesced [426] print_cls::sc#3 ← print_cls::sc#1 +Coalesced [193] mulf16s::m#7 ← mulf16s::m#1 +Coalesced [199] mulf16s::m#10 ← mulf16s::m#2 +Coalesced [203] mulf16s::m#9 ← mulf16s::m#5 +Coalesced [204] mulf16s::m#8 ← mulf16s::m#0 +Coalesced [220] mul16s::m#7 ← mul16s::m#1 +Coalesced [226] mul16s::m#10 ← mul16s::m#2 +Coalesced [230] mul16s::m#9 ← mul16s::m#5 +Coalesced [231] mul16s::m#8 ← mul16s::m#0 +Coalesced [234] mul16u::a#10 ← mul16u::a#6 +Coalesced [235] mul16u::mb#6 ← mul16u::mb#0 +Coalesced [242] mul16u::res#9 ← mul16u::res#1 +Coalesced [246] mul16u::a#11 ← mul16u::a#0 +Coalesced [247] mul16u::res#7 ← mul16u::res#6 +Coalesced [248] mul16u::mb#7 ← mul16u::mb#1 +Coalesced (already) [249] mul16u::res#8 ← mul16u::res#2 +Coalesced [256] muls16s::return#5 ← muls16s::m#1 +Coalesced [259] muls16s::m#10 ← muls16s::m#1 +Coalesced [260] muls16s::j#3 ← muls16s::j#1 +Coalesced [265] muls16s::return#6 ← muls16s::m#2 +Coalesced [266] muls16s::m#11 ← muls16s::m#2 +Coalesced [267] muls16s::i#3 ← muls16s::i#1 +Coalesced [270] print_char_cursor#191 ← print_char_cursor#139 +Coalesced [272] mul16u_compare::a#16 ← mul16u_compare::a#6 +Coalesced [273] mul16u_compare::b#16 ← mul16u_compare::b#6 +Coalesced [284] mul16u::b#4 ← mul16u::b#1 +Coalesced [285] mul16u::a#9 ← mul16u::a#2 +Coalesced [291] mulf16u::a#3 ← mulf16u::a#1 +Coalesced [292] mulf16u::b#3 ← mulf16u::b#1 +Coalesced (already) [315] print_char_cursor#181 ← print_char_cursor#128 +Not coalescing [317] print_char_cursor#192 ← print_line_cursor#1 +Coalesced (already) [319] print_line_cursor#107 ← print_line_cursor#1 +Coalesced (already) [320] print_char_cursor#182 ← print_char_cursor#128 +Coalesced (already) [322] print_char_cursor#219 ← print_char_cursor#128 +Coalesced [323] mul16u_compare::a#15 ← mul16u_compare::a#1 +Coalesced [324] mul16u_compare::b#15 ← mul16u_compare::b#1 +Coalesced [325] mul16u_compare::i#14 ← mul16u_compare::i#1 +Coalesced (already) [326] mul16u_compare::a#17 ← mul16u_compare::a#1 +Coalesced (already) [327] mul16u_compare::b#17 ← mul16u_compare::b#1 +Coalesced [328] mul16u_compare::j#11 ← mul16u_compare::j#1 +Coalesced [329] mul16u_compare::ok#5 ← mul16u_compare::ok#4 +Coalesced (already) [330] print_char_cursor#193 ← print_char_cursor#128 +Coalesced [333] print_word::w#7 ← print_word::w#3 +Coalesced (already) [334] print_char_cursor#206 ← print_char_cursor#128 +Coalesced (already) [336] print_char_cursor#194 ← print_char_cursor#20 +Coalesced [339] print_word::w#8 ← print_word::w#4 +Coalesced (already) [340] print_char_cursor#207 ← print_char_cursor#128 +Coalesced (already) [342] print_char_cursor#195 ← print_char_cursor#20 +Coalesced [345] print_dword::dw#6 ← print_dword::dw#1 +Coalesced (already) [346] print_char_cursor#202 ← print_char_cursor#128 +Coalesced (already) [348] print_char_cursor#196 ← print_char_cursor#20 +Coalesced [351] print_dword::dw#7 ← print_dword::dw#2 +Coalesced (already) [352] print_char_cursor#203 ← print_char_cursor#128 +Coalesced (already) [354] print_char_cursor#197 ← print_char_cursor#20 +Coalesced [357] print_dword::dw#8 ← print_dword::dw#3 +Coalesced (already) [358] print_char_cursor#204 ← print_char_cursor#128 +Coalesced (already) [360] print_char_cursor#183 ← print_char_cursor#20 +Coalesced [368] muls16u::return#5 ← muls16u::m#1 +Coalesced [371] muls16u::m#5 ← muls16u::m#1 +Coalesced [372] muls16u::i#3 ← muls16u::i#1 +Coalesced [380] mulf_init::sqr#8 ← mulf_init::sqr#2 +Coalesced [381] mulf_init::x_2#7 ← mulf_init::x_2#1 +Coalesced [404] mulf_init::x_255#5 ← mulf_init::x_255#1 +Coalesced [405] mulf_init::sqr2_lo#5 ← mulf_init::sqr2_lo#1 +Coalesced [406] mulf_init::sqr2_hi#5 ← mulf_init::sqr2_hi#1 +Coalesced [407] mulf_init::dir#4 ← mulf_init::dir#3 +Coalesced (already) [408] mulf_init::dir#5 ← mulf_init::dir#2 +Coalesced [409] mulf_init::c#5 ← mulf_init::c#1 +Coalesced [410] mulf_init::sqr#6 ← mulf_init::sqr#1 +Coalesced [411] mulf_init::sqr1_lo#5 ← mulf_init::sqr1_lo#1 +Coalesced [412] mulf_init::sqr1_hi#5 ← mulf_init::sqr1_hi#1 +Coalesced [413] mulf_init::x_2#5 ← mulf_init::x_2#2 +Coalesced [414] mulf_init::sqr#7 ← mulf_init::sqr#4 +Coalesced (already) [415] mulf_init::x_2#6 ← mulf_init::x_2#3 +Coalesced [422] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 42 phi equivalence classes Culled Empty Block (label) mul16s_compare::@7 Culled Empty Block (label) mul16s_compare::@20 @@ -3803,338 +3795,334 @@ mulf16s::@6: scope:[mulf16s] from mulf16s [141] if((signed word) mulf16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@1 to:mulf16s::@3 mulf16s::@3: scope:[mulf16s] from mulf16s::@6 - [142] (word~) mulf16s::$5 ← > (dword) mulf16s::m#0 - [143] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 - [144] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 - [145] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 + [142] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 + [143] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 + [144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 to:mulf16s::@1 mulf16s::@1: scope:[mulf16s] from mulf16s::@3 mulf16s::@6 - [146] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@6/(dword) mulf16s::m#0 ) - [147] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 + [145] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@6/(dword) mulf16s::m#0 ) + [146] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 to:mulf16s::@4 mulf16s::@4: scope:[mulf16s] from mulf16s::@1 - [148] (word~) mulf16s::$11 ← > (dword) mulf16s::m#5 - [149] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 - [150] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 - [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 + [147] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 + [148] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 + [149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 to:mulf16s::@2 mulf16s::@2: scope:[mulf16s] from mulf16s::@1 mulf16s::@4 - [152] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 ) - [153] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 + [150] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 ) + [151] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 to:mulf16s::@return mulf16s::@return: scope:[mulf16s] from mulf16s::@2 - [154] return + [152] return to:@return mulf16u: scope:[mulf16u] from mul16u_compare::@14 mulf16s - [155] (word) mulf16u::b#2 ← phi( mul16u_compare::@14/(word) mulf16u::b#1 mulf16s/(word~) mulf16u::b#4 ) - [155] (word) mulf16u::a#2 ← phi( mul16u_compare::@14/(word) mulf16u::a#1 mulf16s/(word~) mulf16u::a#4 ) - [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 - [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 + [153] (word) mulf16u::b#2 ← phi( mul16u_compare::@14/(word) mulf16u::b#1 mulf16s/(word~) mulf16u::b#4 ) + [153] (word) mulf16u::a#2 ← phi( mul16u_compare::@14/(word) mulf16u::a#1 mulf16s/(word~) mulf16u::a#4 ) + [154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 + [155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } - [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) + [157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) to:mulf16u::@return mulf16u::@return: scope:[mulf16u] from mulf16u - [160] return + [158] return to:@return mul16s: scope:[mul16s] from mul16s_compare::@13 - [161] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 - [162] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 - [163] call mul16u - [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + [159] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 + [160] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 + [161] call mul16u + [162] (dword) mul16u::return#2 ← (dword) mul16u::res#2 to:mul16s::@6 mul16s::@6: scope:[mul16s] from mul16s - [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - [166] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 + [163] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + [164] 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::@6 - [167] (word~) mul16s::$5 ← > (dword) mul16s::m#0 - [168] (word~) mul16s::$6 ← > (dword) mul16s::m#0 - [169] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 - [170] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 + [165] (word~) mul16s::$6 ← > (dword) mul16s::m#0 + [166] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 + [167] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 to:mul16s::@1 mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@6 - [171] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) - [172] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 + [168] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) + [169] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 to:mul16s::@4 mul16s::@4: scope:[mul16s] from mul16s::@1 - [173] (word~) mul16s::$11 ← > (dword) mul16s::m#5 - [174] (word~) mul16s::$12 ← > (dword) mul16s::m#5 - [175] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 - [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 + [170] (word~) mul16s::$12 ← > (dword) mul16s::m#5 + [171] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 + [172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 to:mul16s::@2 mul16s::@2: scope:[mul16s] from mul16s::@1 mul16s::@4 - [177] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 ) - [178] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 + [173] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 ) + [174] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 to:mul16s::@return mul16s::@return: scope:[mul16s] from mul16s::@2 - [179] return + [175] return to:@return mul16u: scope:[mul16u] from mul16s mul16u_compare::@13 - [180] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mul16u_compare::@13/(word) mul16u::a#2 ) - [180] (word) mul16u::b#2 ← phi( mul16s/(word~) mul16u::b#3 mul16u_compare::@13/(word) mul16u::b#1 ) - [181] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 + [176] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mul16u_compare::@13/(word) mul16u::a#2 ) + [176] (word) mul16u::b#2 ← phi( mul16s/(word~) mul16u::b#3 mul16u_compare::@13/(word) mul16u::b#1 ) + [177] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@4 - [182] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) - [182] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) - [182] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) - [183] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 + [178] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) + [178] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) + [178] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) + [179] 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 - [184] return + [180] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [185] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [186] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 + [181] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [182] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 to:mul16u::@7 mul16u::@7: scope:[mul16u] from mul16u::@2 - [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [183] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7 - [188] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) - [189] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [190] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [184] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) + [185] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [186] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:mul16u::@1 muls16s: scope:[muls16s] from mul16s_compare::@2 - [191] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 + [187] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 to:muls16s::@6 muls16s::@6: scope:[muls16s] from muls16s - [192] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 + [188] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 to:muls16s::@3 muls16s::@3: scope:[muls16s] from muls16s::@3 muls16s::@6 - [193] (signed word) muls16s::j#2 ← phi( muls16s::@3/(signed word) muls16s::j#1 muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [193] (signed dword) muls16s::m#3 ← phi( muls16s::@3/(signed dword) muls16s::m#1 muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [194] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 - [195] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 - [196] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 + [189] (signed word) muls16s::j#2 ← phi( muls16s::@3/(signed word) muls16s::j#1 muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [189] (signed dword) muls16s::m#3 ← phi( muls16s::@3/(signed dword) muls16s::m#1 muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [190] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 + [191] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 + [192] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 to:muls16s::@4 muls16s::@4: scope:[muls16s] from muls16s::@3 muls16s::@5 muls16s::@6 - [197] (signed dword) muls16s::return#0 ← phi( muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@3/(signed dword) muls16s::m#1 muls16s::@5/(signed dword) muls16s::m#2 ) + [193] (signed dword) muls16s::return#0 ← phi( muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@3/(signed dword) muls16s::m#1 muls16s::@5/(signed dword) muls16s::m#2 ) to:muls16s::@return muls16s::@return: scope:[muls16s] from muls16s::@4 - [198] return + [194] return to:@return muls16s::@5: scope:[muls16s] from muls16s muls16s::@5 - [199] (signed word) muls16s::i#2 ← phi( muls16s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@5/(signed word) muls16s::i#1 ) - [199] (signed dword) muls16s::m#5 ← phi( muls16s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@5/(signed dword) muls16s::m#2 ) - [200] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 - [201] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 - [202] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 + [195] (signed word) muls16s::i#2 ← phi( muls16s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@5/(signed word) muls16s::i#1 ) + [195] (signed dword) muls16s::m#5 ← phi( muls16s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@5/(signed dword) muls16s::m#2 ) + [196] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 + [197] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 + [198] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 to:muls16s::@4 mul16u_compare: scope:[mul16u_compare] from main::@2 - [203] phi() + [199] phi() to:mul16u_compare::@1 mul16u_compare::@1: scope:[mul16u_compare] from mul16u_compare mul16u_compare::@10 - [204] (byte) mul16u_compare::i#12 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(byte) mul16u_compare::i#1 ) - [204] (word) mul16u_compare::b#6 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(word) mul16u_compare::b#1 ) - [204] (word) mul16u_compare::a#6 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(word) mul16u_compare::a#1 ) - [204] (byte*) print_char_cursor#139 ← phi( mul16u_compare/((byte*))(word/signed word/dword/signed dword) 1024 mul16u_compare::@10/(byte*) print_char_cursor#128 ) - [205] call print_str + [200] (byte) mul16u_compare::i#12 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(byte) mul16u_compare::i#1 ) + [200] (word) mul16u_compare::b#6 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(word) mul16u_compare::b#1 ) + [200] (word) mul16u_compare::a#6 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(word) mul16u_compare::a#1 ) + [200] (byte*) print_char_cursor#139 ← phi( mul16u_compare/((byte*))(word/signed word/dword/signed dword) 1024 mul16u_compare::@10/(byte*) print_char_cursor#128 ) + [201] call print_str to:mul16u_compare::@2 mul16u_compare::@2: scope:[mul16u_compare] from mul16u_compare::@1 mul16u_compare::@5 - [206] (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@5/(byte) mul16u_compare::j#1 ) - [206] (word) mul16u_compare::b#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#1 ) - [206] (word) mul16u_compare::a#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#6 mul16u_compare::@5/(word) mul16u_compare::a#1 ) - [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 - [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 - [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 - [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 - [211] call muls16u - [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 + [202] (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@5/(byte) mul16u_compare::j#1 ) + [202] (word) mul16u_compare::b#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#1 ) + [202] (word) mul16u_compare::a#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#6 mul16u_compare::@5/(word) mul16u_compare::a#1 ) + [203] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 + [204] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 + [205] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 + [206] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 + [207] call muls16u + [208] (dword) muls16u::return#2 ← (dword) muls16u::return#0 to:mul16u_compare::@13 mul16u_compare::@13: scope:[mul16u_compare] from mul16u_compare::@2 - [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 - [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 - [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 - [216] call mul16u - [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + [209] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 + [210] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 + [211] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 + [212] call mul16u + [213] (dword) mul16u::return#3 ← (dword) mul16u::res#2 to:mul16u_compare::@14 mul16u_compare::@14: scope:[mul16u_compare] from mul16u_compare::@13 - [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 - [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 - [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 - [221] call mulf16u - [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 + [214] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 + [215] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 + [216] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 + [217] call mulf16u + [218] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 to:mul16u_compare::@15 mul16u_compare::@15: scope:[mul16u_compare] from mul16u_compare::@14 - [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 - [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 + [219] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 + [220] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 to:mul16u_compare::@6 mul16u_compare::@6: scope:[mul16u_compare] from mul16u_compare::@15 - [225] phi() + [221] phi() to:mul16u_compare::@3 mul16u_compare::@3: scope:[mul16u_compare] from mul16u_compare::@15 mul16u_compare::@6 - [226] (byte) mul16u_compare::ok#4 ← phi( mul16u_compare::@15/(byte/signed byte/word/signed word/dword/signed dword) 1 mul16u_compare::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 + [222] (byte) mul16u_compare::ok#4 ← phi( mul16u_compare::@15/(byte/signed byte/word/signed word/dword/signed dword) 1 mul16u_compare::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [223] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 to:mul16u_compare::@4 mul16u_compare::@4: scope:[mul16u_compare] from mul16u_compare::@22 mul16u_compare::@3 - [228] (byte) mul16u_compare::ok#3 ← phi( mul16u_compare::@22/(byte) mul16u_compare::ok#4 mul16u_compare::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [229] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5 + [224] (byte) mul16u_compare::ok#3 ← phi( mul16u_compare::@22/(byte) mul16u_compare::ok#4 mul16u_compare::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [225] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5 to:mul16u_compare::@8 mul16u_compare::@8: scope:[mul16u_compare] from mul16u_compare::@4 - [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 - [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 - [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 - [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 - [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 - [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 - [236] call mul16u_error + [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 + [227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 + [228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 + [229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 + [230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 + [231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 + [232] call mul16u_error to:mul16u_compare::@return mul16u_compare::@return: scope:[mul16u_compare] from mul16u_compare::@18 mul16u_compare::@8 - [237] return + [233] return to:@return mul16u_compare::@5: scope:[mul16u_compare] from mul16u_compare::@4 - [238] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 - [239] if((byte) mul16u_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@2 + [234] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 + [235] if((byte) mul16u_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@2 to:mul16u_compare::@10 mul16u_compare::@10: scope:[mul16u_compare] from mul16u_compare::@5 - [240] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 - [241] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 + [236] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 + [237] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 to:mul16u_compare::@11 mul16u_compare::@11: scope:[mul16u_compare] from mul16u_compare::@10 - [242] phi() - [243] call print_ln + [238] phi() + [239] call print_ln to:mul16u_compare::@17 mul16u_compare::@17: scope:[mul16u_compare] from mul16u_compare::@11 - [244] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 - [245] call print_str + [240] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 + [241] call print_str to:mul16u_compare::@18 mul16u_compare::@18: scope:[mul16u_compare] from mul16u_compare::@17 - [246] phi() - [247] call print_ln + [242] phi() + [243] call print_ln to:mul16u_compare::@return mul16u_compare::@22: scope:[mul16u_compare] from mul16u_compare::@3 - [248] phi() + [244] phi() to:mul16u_compare::@4 mul16u_error: scope:[mul16u_error] from mul16u_compare::@8 - [249] phi() - [250] call print_str + [245] phi() + [246] call print_str to:mul16u_error::@1 mul16u_error::@1: scope:[mul16u_error] from mul16u_error - [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 - [252] call print_word + [247] (word) print_word::w#3 ← (word) mul16u_error::a#0 + [248] call print_word to:mul16u_error::@2 mul16u_error::@2: scope:[mul16u_error] from mul16u_error::@1 - [253] phi() - [254] call print_str + [249] phi() + [250] call print_str to:mul16u_error::@3 mul16u_error::@3: scope:[mul16u_error] from mul16u_error::@2 - [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 - [256] call print_word + [251] (word) print_word::w#4 ← (word) mul16u_error::b#0 + [252] call print_word to:mul16u_error::@4 mul16u_error::@4: scope:[mul16u_error] from mul16u_error::@3 - [257] phi() - [258] call print_str + [253] phi() + [254] call print_str to:mul16u_error::@5 mul16u_error::@5: scope:[mul16u_error] from mul16u_error::@4 - [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 - [260] call print_dword + [255] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 + [256] call print_dword to:mul16u_error::@6 mul16u_error::@6: scope:[mul16u_error] from mul16u_error::@5 - [261] phi() - [262] call print_str + [257] phi() + [258] call print_str to:mul16u_error::@7 mul16u_error::@7: scope:[mul16u_error] from mul16u_error::@6 - [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 - [264] call print_dword + [259] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 + [260] call print_dword to:mul16u_error::@8 mul16u_error::@8: scope:[mul16u_error] from mul16u_error::@7 - [265] phi() - [266] call print_str + [261] phi() + [262] call print_str to:mul16u_error::@9 mul16u_error::@9: scope:[mul16u_error] from mul16u_error::@8 - [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 - [268] call print_dword + [263] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 + [264] call print_dword to:mul16u_error::@10 mul16u_error::@10: scope:[mul16u_error] from mul16u_error::@9 - [269] phi() - [270] call print_ln + [265] phi() + [266] call print_ln to:mul16u_error::@return mul16u_error::@return: scope:[mul16u_error] from mul16u_error::@10 - [271] return + [267] return to:@return muls16u: scope:[muls16u] from mul16u_compare::@2 - [272] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 + [268] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 to:muls16u::@2 muls16u::@2: scope:[muls16u] from muls16u muls16u::@2 - [273] (word) muls16u::i#2 ← phi( muls16u::@2/(word) muls16u::i#1 muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [273] (dword) muls16u::m#3 ← phi( muls16u::@2/(dword) muls16u::m#1 muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [274] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 - [275] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 - [276] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 + [269] (word) muls16u::i#2 ← phi( muls16u::@2/(word) muls16u::i#1 muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [269] (dword) muls16u::m#3 ← phi( muls16u::@2/(dword) muls16u::m#1 muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [270] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 + [271] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 + [272] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 to:muls16u::@1 muls16u::@1: scope:[muls16u] from muls16u muls16u::@2 - [277] (dword) muls16u::return#0 ← phi( muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16u::@2/(dword) muls16u::m#1 ) + [273] (dword) muls16u::return#0 ← phi( muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16u::@2/(dword) muls16u::m#1 ) to:muls16u::@return muls16u::@return: scope:[muls16u] from muls16u::@1 - [278] return + [274] return to:@return mulf_init: scope:[mulf_init] from main::@1 - [279] phi() + [275] phi() to:mulf_init::@1 mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2 - [280] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) - [280] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) - [280] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) - [280] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) - [280] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) - [281] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 - [282] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [283] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 + [276] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) + [276] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) + [276] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) + [276] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) + [276] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) + [277] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 + [278] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [279] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 to:mulf_init::@5 mulf_init::@5: scope:[mulf_init] from mulf_init::@1 - [284] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 - [285] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 + [280] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 + [281] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 to:mulf_init::@2 mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@5 - [286] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) - [286] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) - [287] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 - [288] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 - [289] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 - [290] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 - [291] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 - [292] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 - [293] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 - [294] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 + [282] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) + [282] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) + [283] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 + [284] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 + [285] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 + [286] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 + [287] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 + [288] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 + [289] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 + [290] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 to:mulf_init::@3 mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4 - [295] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) - [295] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) - [295] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) - [295] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [296] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) - [297] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) - [298] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 - [299] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 - [300] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 + [291] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) + [291] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) + [291] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) + [291] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [292] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) + [293] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) + [294] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 + [295] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 + [296] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 to:mulf_init::@4 mulf_init::@4: scope:[mulf_init] from mulf_init::@12 mulf_init::@3 - [301] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [302] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 - [303] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 + [297] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [298] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 + [299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 to:mulf_init::@8 mulf_init::@8: scope:[mulf_init] from mulf_init::@4 - [304] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) - [305] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) + [300] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) + [301] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) to:mulf_init::@return mulf_init::@return: scope:[mulf_init] from mulf_init::@8 - [306] return + [302] return to:@return mulf_init::@12: scope:[mulf_init] from mulf_init::@3 - [307] phi() + [303] phi() to:mulf_init::@4 print_cls: scope:[print_cls] from main - [308] phi() + [304] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [309] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [310] *((byte*) print_cls::sc#2) ← (byte) ' ' - [311] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [312] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 + [305] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [306] *((byte*) print_cls::sc#2) ← (byte) ' ' + [307] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [308] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [313] return + [309] return to:@return @@ -4142,22 +4130,20 @@ VARIABLE REGISTER WEIGHTS (byte*) BGCOL (void()) main() (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) -(word~) mul16s::$11 20.0 (word~) mul16s::$12 4.0 (word~) mul16s::$16 4.0 (word~) mul16s::$17 4.0 -(word~) mul16s::$5 20.0 (word~) mul16s::$6 4.0 (signed word) mul16s::a -(signed word) mul16s::a#0 6.4375 +(signed word) mul16s::a#0 7.357142857142858 (signed word) mul16s::b -(signed word) mul16s::b#0 8.583333333333332 +(signed word) mul16s::b#0 9.363636363636363 (dword) mul16s::m (dword) mul16s::m#0 2.0 (dword) mul16s::m#1 4.0 (dword) mul16s::m#2 4.0 (dword) mul16s::m#4 6.0 -(dword) mul16s::m#5 2.4 +(dword) mul16s::m#5 2.5 (signed dword) mul16s::return (signed dword) mul16s::return#0 34.33333333333333 (signed dword) mul16s::return#2 202.0 @@ -4255,22 +4241,20 @@ VARIABLE REGISTER WEIGHTS (dword) mul16u_error::ms (dword) mul16u_error::ms#0 0.3076923076923077 (signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b) -(word~) mulf16s::$11 20.0 (word~) mulf16s::$12 4.0 (word~) mulf16s::$16 4.0 (word~) mulf16s::$17 4.0 -(word~) mulf16s::$5 20.0 (word~) mulf16s::$6 4.0 (signed word) mulf16s::a -(signed word) mulf16s::a#0 6.4375 +(signed word) mulf16s::a#0 7.357142857142858 (signed word) mulf16s::b -(signed word) mulf16s::b#0 8.583333333333332 +(signed word) mulf16s::b#0 9.363636363636363 (dword) mulf16s::m (dword) mulf16s::m#0 2.0 (dword) mulf16s::m#1 4.0 (dword) mulf16s::m#2 4.0 (dword) mulf16s::m#4 6.0 -(dword) mulf16s::m#5 2.4 +(dword) mulf16s::m#5 2.5 (signed dword) mulf16s::return (signed dword) mulf16s::return#0 34.33333333333333 (signed dword) mulf16s::return#2 202.0 @@ -4500,19 +4484,15 @@ Added variable mul16s_error::mf#0 to zero page equivalence class [ mul16s_error: Added variable print_byte::$0 to zero page equivalence class [ print_byte::$0 ] Added variable print_byte::$2 to zero page equivalence class [ print_byte::$2 ] Added variable mulf16u::return#2 to zero page equivalence class [ mulf16u::return#2 ] -Added variable mulf16s::$5 to zero page equivalence class [ mulf16s::$5 ] Added variable mulf16s::$6 to zero page equivalence class [ mulf16s::$6 ] Added variable mulf16s::$16 to zero page equivalence class [ mulf16s::$16 ] -Added variable mulf16s::$11 to zero page equivalence class [ mulf16s::$11 ] Added variable mulf16s::$12 to zero page equivalence class [ mulf16s::$12 ] Added variable mulf16s::$17 to zero page equivalence class [ mulf16s::$17 ] Added variable mulf16s::return#0 to zero page equivalence class [ mulf16s::return#0 ] Added variable mulf16u::return#0 to zero page equivalence class [ mulf16u::return#0 ] Added variable mul16u::return#2 to zero page equivalence class [ mul16u::return#2 ] -Added variable mul16s::$5 to zero page equivalence class [ mul16s::$5 ] Added variable mul16s::$6 to zero page equivalence class [ mul16s::$6 ] Added variable mul16s::$16 to zero page equivalence class [ mul16s::$16 ] -Added variable mul16s::$11 to zero page equivalence class [ mul16s::$11 ] Added variable mul16s::$12 to zero page equivalence class [ mul16s::$12 ] Added variable mul16s::$17 to zero page equivalence class [ mul16s::$17 ] Added variable mul16s::return#0 to zero page equivalence class [ mul16s::return#0 ] @@ -4596,19 +4576,15 @@ Complete equivalence classes [ print_byte::$0 ] [ print_byte::$2 ] [ mulf16u::return#2 ] -[ mulf16s::$5 ] [ mulf16s::$6 ] [ mulf16s::$16 ] -[ mulf16s::$11 ] [ mulf16s::$12 ] [ mulf16s::$17 ] [ mulf16s::return#0 ] [ mulf16u::return#0 ] [ mul16u::return#2 ] -[ mul16s::$5 ] [ mul16s::$6 ] [ mul16s::$16 ] -[ mul16s::$11 ] [ mul16s::$12 ] [ mul16s::$17 ] [ mul16s::return#0 ] @@ -4691,39 +4667,35 @@ Allocated zp ZP_DWORD:138 [ mul16s_error::mf#0 ] Allocated zp ZP_BYTE:142 [ print_byte::$0 ] Allocated zp ZP_BYTE:143 [ print_byte::$2 ] Allocated zp ZP_DWORD:144 [ mulf16u::return#2 ] -Allocated zp ZP_WORD:148 [ mulf16s::$5 ] -Allocated zp ZP_WORD:150 [ mulf16s::$6 ] -Allocated zp ZP_WORD:152 [ mulf16s::$16 ] -Allocated zp ZP_WORD:154 [ mulf16s::$11 ] -Allocated zp ZP_WORD:156 [ mulf16s::$12 ] -Allocated zp ZP_WORD:158 [ mulf16s::$17 ] -Allocated zp ZP_DWORD:160 [ mulf16s::return#0 ] -Allocated zp ZP_DWORD:164 [ mulf16u::return#0 ] -Allocated zp ZP_DWORD:168 [ mul16u::return#2 ] -Allocated zp ZP_WORD:172 [ mul16s::$5 ] -Allocated zp ZP_WORD:174 [ mul16s::$6 ] -Allocated zp ZP_WORD:176 [ mul16s::$16 ] -Allocated zp ZP_WORD:178 [ mul16s::$11 ] -Allocated zp ZP_WORD:180 [ mul16s::$12 ] -Allocated zp ZP_WORD:182 [ mul16s::$17 ] -Allocated zp ZP_DWORD:184 [ mul16s::return#0 ] -Allocated zp ZP_BYTE:188 [ mul16u::$1 ] -Allocated zp ZP_WORD:189 [ muls16u::a#0 ] -Allocated zp ZP_WORD:191 [ muls16u::b#0 ] -Allocated zp ZP_DWORD:193 [ muls16u::return#2 ] -Allocated zp ZP_DWORD:197 [ mul16u_compare::ms#0 ] -Allocated zp ZP_DWORD:201 [ mul16u::return#3 ] -Allocated zp ZP_DWORD:205 [ mul16u_compare::mn#0 ] -Allocated zp ZP_DWORD:209 [ mulf16u::return#3 ] -Allocated zp ZP_DWORD:213 [ mul16u_compare::mf#0 ] -Allocated zp ZP_WORD:217 [ mul16u_error::a#0 ] -Allocated zp ZP_WORD:219 [ mul16u_error::b#0 ] -Allocated zp ZP_DWORD:221 [ mul16u_error::ms#0 ] -Allocated zp ZP_DWORD:225 [ mul16u_error::mn#0 ] -Allocated zp ZP_DWORD:229 [ mul16u_error::mf#0 ] -Allocated zp ZP_BYTE:233 [ mulf_init::$2 ] -Allocated zp ZP_BYTE:234 [ mulf_init::$5 ] -Allocated zp ZP_BYTE:235 [ mulf_init::$6 ] +Allocated zp ZP_WORD:148 [ mulf16s::$6 ] +Allocated zp ZP_WORD:150 [ mulf16s::$16 ] +Allocated zp ZP_WORD:152 [ mulf16s::$12 ] +Allocated zp ZP_WORD:154 [ mulf16s::$17 ] +Allocated zp ZP_DWORD:156 [ mulf16s::return#0 ] +Allocated zp ZP_DWORD:160 [ mulf16u::return#0 ] +Allocated zp ZP_DWORD:164 [ mul16u::return#2 ] +Allocated zp ZP_WORD:168 [ mul16s::$6 ] +Allocated zp ZP_WORD:170 [ mul16s::$16 ] +Allocated zp ZP_WORD:172 [ mul16s::$12 ] +Allocated zp ZP_WORD:174 [ mul16s::$17 ] +Allocated zp ZP_DWORD:176 [ mul16s::return#0 ] +Allocated zp ZP_BYTE:180 [ mul16u::$1 ] +Allocated zp ZP_WORD:181 [ muls16u::a#0 ] +Allocated zp ZP_WORD:183 [ muls16u::b#0 ] +Allocated zp ZP_DWORD:185 [ muls16u::return#2 ] +Allocated zp ZP_DWORD:189 [ mul16u_compare::ms#0 ] +Allocated zp ZP_DWORD:193 [ mul16u::return#3 ] +Allocated zp ZP_DWORD:197 [ mul16u_compare::mn#0 ] +Allocated zp ZP_DWORD:201 [ mulf16u::return#3 ] +Allocated zp ZP_DWORD:205 [ mul16u_compare::mf#0 ] +Allocated zp ZP_WORD:209 [ mul16u_error::a#0 ] +Allocated zp ZP_WORD:211 [ mul16u_error::b#0 ] +Allocated zp ZP_DWORD:213 [ mul16u_error::ms#0 ] +Allocated zp ZP_DWORD:217 [ mul16u_error::mn#0 ] +Allocated zp ZP_DWORD:221 [ mul16u_error::mf#0 ] +Allocated zp ZP_BYTE:225 [ mulf_init::$2 ] +Allocated zp ZP_BYTE:226 [ mulf_init::$5 ] +Allocated zp ZP_BYTE:227 [ mulf_init::$6 ] INITIAL ASM //SEG0 File Comments @@ -4756,7 +4728,7 @@ main: { lda #5 sta BGCOL //SEG11 [5] call print_cls - //SEG12 [308] phi from main to print_cls [phi:main->print_cls] + //SEG12 [304] 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] @@ -4765,7 +4737,7 @@ main: { //SEG14 main::@1 b1: //SEG15 [7] call mulf_init - //SEG16 [279] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG16 [275] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] mulf_init_from_b1: jsr mulf_init //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -4774,7 +4746,7 @@ main: { //SEG18 main::@2 b2: //SEG19 [9] call mul16u_compare - //SEG20 [203] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] + //SEG20 [199] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] mul16u_compare_from_b2: jsr mul16u_compare //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] @@ -5671,14 +5643,12 @@ print_sword: { // Fixes offsets introduced by using unsigned multiplication // mulf16s(signed word zeropage($72) a, signed word zeropage($74) b) mulf16s: { - .label _5 = $94 - .label _6 = $96 - .label _11 = $9a - .label _12 = $9c - .label _16 = $98 - .label _17 = $9e + .label _6 = $94 + .label _12 = $98 + .label _16 = $96 + .label _17 = $9a .label m = $1d - .label return = $a0 + .label return = $9c .label a = $72 .label b = $74 .label return_2 = $76 @@ -5693,10 +5663,10 @@ mulf16s: { lda b+1 sta mulf16u.b+1 //SEG300 [138] call mulf16u - //SEG301 [155] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] + //SEG301 [153] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] mulf16u_from_mulf16s: - //SEG302 [155] phi (word) mulf16u::b#2 = (word~) mulf16u::b#4 [phi:mulf16s->mulf16u#0] -- register_copy - //SEG303 [155] phi (word) mulf16u::a#2 = (word~) mulf16u::a#4 [phi:mulf16s->mulf16u#1] -- register_copy + //SEG302 [153] phi (word) mulf16u::b#2 = (word~) mulf16u::b#4 [phi:mulf16s->mulf16u#0] -- register_copy + //SEG303 [153] phi (word) mulf16u::a#2 = (word~) mulf16u::a#4 [phi:mulf16s->mulf16u#1] -- register_copy jsr mulf16u //SEG304 [139] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 -- vduz1=vduz2 lda mulf16u.return @@ -5725,17 +5695,12 @@ mulf16s: { jmp b3 //SEG308 mulf16s::@3 b3: - //SEG309 [142] (word~) mulf16s::$5 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 - lda m+2 - sta _5 - lda m+3 - sta _5+1 - //SEG310 [143] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 + //SEG309 [142] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG311 [144] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG310 [143] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2_minus_vwuz3 lda _6 sec sbc b @@ -5743,35 +5708,30 @@ mulf16s: { lda _6+1 sbc b+1 sta _16+1 - //SEG312 [145] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG311 [144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG313 [146] phi from mulf16s::@3 mulf16s::@6 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1] + //SEG312 [145] phi from mulf16s::@3 mulf16s::@6 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1] b1_from_b3: b1_from_b6: - //SEG314 [146] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1#0] -- register_copy + //SEG313 [145] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1#0] -- register_copy jmp b1 - //SEG315 mulf16s::@1 + //SEG314 mulf16s::@1 b1: - //SEG316 [147] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 + //SEG315 [146] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2_from_b1 jmp b4 - //SEG317 mulf16s::@4 + //SEG316 mulf16s::@4 b4: - //SEG318 [148] (word~) mulf16s::$11 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 - lda m+2 - sta _11 - lda m+3 - sta _11+1 - //SEG319 [149] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 + //SEG317 [147] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _12 lda m+3 sta _12+1 - //SEG320 [150] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG318 [148] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2_minus_vwuz3 lda _12 sec sbc a @@ -5779,19 +5739,19 @@ mulf16s: { lda _12+1 sbc a+1 sta _17+1 - //SEG321 [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG319 [149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - //SEG322 [152] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] + //SEG320 [150] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] b2_from_b1: b2_from_b4: - //SEG323 [152] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy + //SEG321 [150] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy jmp b2 - //SEG324 mulf16s::@2 + //SEG322 mulf16s::@2 b2: - //SEG325 [153] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 -- vdsz1=_sdword_vduz2 + //SEG323 [151] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 -- vdsz1=_sdword_vduz2 lda m sta return lda m+1 @@ -5801,12 +5761,12 @@ mulf16s: { lda m+3 sta return+3 jmp breturn - //SEG326 mulf16s::@return + //SEG324 mulf16s::@return breturn: - //SEG327 [154] return + //SEG325 [152] return rts } -//SEG328 mulf16u +//SEG326 mulf16u // Fast multiply two unsigned words to a double word result // Done in assembler to utilize fast addition A+X // mulf16u(word zeropage($21) a, word zeropage($23) b) @@ -5814,22 +5774,22 @@ mulf16u: { .label memA = $f8 .label memB = $fa .label memR = $fc - .label return = $a4 + .label return = $a0 .label return_2 = $90 .label a = $21 .label b = $23 - .label return_3 = $d1 - //SEG329 [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 + .label return_3 = $c9 + //SEG327 [154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 lda a sta memA lda a+1 sta memA+1 - //SEG330 [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 + //SEG328 [155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 lda b sta memB lda b+1 sta memB+1 - //SEG331 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } + //SEG329 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } lda memA sta sm1a+1 sta sm3a+1 @@ -5922,7 +5882,7 @@ mulf16u: { bcc !+ inc memR+3 !: - //SEG332 [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 + //SEG330 [157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 lda memR sta return lda memR+1 @@ -5932,44 +5892,42 @@ mulf16u: { lda memR+3 sta return+3 jmp breturn - //SEG333 mulf16u::@return + //SEG331 mulf16u::@return breturn: - //SEG334 [160] return + //SEG332 [158] return rts } -//SEG335 mul16s +//SEG333 mul16s // Multiply of two signed words to a signed double word // Fixes offsets introduced by using unsigned multiplication // mul16s(signed word zeropage($66) a, signed word zeropage($68) b) mul16s: { - .label _5 = $ac - .label _6 = $ae - .label _11 = $b2 - .label _12 = $b4 - .label _16 = $b0 - .label _17 = $b6 + .label _6 = $a8 + .label _12 = $ac + .label _16 = $aa + .label _17 = $ae .label m = $25 - .label return = $b8 + .label return = $b0 .label a = $66 .label b = $68 .label return_2 = $6a - //SEG336 [161] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 + //SEG334 [159] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 lda b sta mul16u.b lda b+1 sta mul16u.b+1 - //SEG337 [162] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + //SEG335 [160] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG338 [163] call mul16u - //SEG339 [180] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG336 [161] call mul16u + //SEG337 [176] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //SEG340 [180] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy - //SEG341 [180] phi (word) mul16u::b#2 = (word~) mul16u::b#3 [phi:mul16s->mul16u#1] -- register_copy + //SEG338 [176] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG339 [176] phi (word) mul16u::b#2 = (word~) mul16u::b#3 [phi:mul16s->mul16u#1] -- register_copy jsr mul16u - //SEG342 [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG340 [162] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return lda mul16u.res+1 @@ -5979,9 +5937,9 @@ mul16s: { lda mul16u.res+3 sta mul16u.return+3 jmp b6 - //SEG343 mul16s::@6 + //SEG341 mul16s::@6 b6: - //SEG344 [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 -- vduz1=vduz2 + //SEG342 [163] (dword) mul16s::m#0 ← (dword) mul16u::return#2 -- vduz1=vduz2 lda mul16u.return sta m lda mul16u.return+1 @@ -5990,23 +5948,18 @@ mul16s: { sta m+2 lda mul16u.return+3 sta m+3 - //SEG345 [166] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + //SEG343 [164] 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_b6 jmp b3 - //SEG346 mul16s::@3 + //SEG344 mul16s::@3 b3: - //SEG347 [167] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 - lda m+2 - sta _5 - lda m+3 - sta _5+1 - //SEG348 [168] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG345 [165] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG349 [169] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG346 [166] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2_minus_vwuz3 lda _6 sec sbc b @@ -6014,35 +5967,30 @@ mul16s: { lda _6+1 sbc b+1 sta _16+1 - //SEG350 [170] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG347 [167] (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 - //SEG351 [171] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG348 [168] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] b1_from_b3: b1_from_b6: - //SEG352 [171] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG349 [168] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy jmp b1 - //SEG353 mul16s::@1 + //SEG350 mul16s::@1 b1: - //SEG354 [172] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 + //SEG351 [169] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2_from_b1 jmp b4 - //SEG355 mul16s::@4 + //SEG352 mul16s::@4 b4: - //SEG356 [173] (word~) mul16s::$11 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 - lda m+2 - sta _11 - lda m+3 - sta _11+1 - //SEG357 [174] (word~) mul16s::$12 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 + //SEG353 [170] (word~) mul16s::$12 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _12 lda m+3 sta _12+1 - //SEG358 [175] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG354 [171] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2_minus_vwuz3 lda _12 sec sbc a @@ -6050,19 +5998,19 @@ mul16s: { lda _12+1 sbc a+1 sta _17+1 - //SEG359 [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG355 [172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - //SEG360 [177] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] + //SEG356 [173] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] b2_from_b1: b2_from_b4: - //SEG361 [177] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy + //SEG357 [173] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy jmp b2 - //SEG362 mul16s::@2 + //SEG358 mul16s::@2 b2: - //SEG363 [178] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz2 + //SEG359 [174] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz2 lda m sta return lda m+1 @@ -6072,23 +6020,23 @@ mul16s: { lda m+3 sta return+3 jmp breturn - //SEG364 mul16s::@return + //SEG360 mul16s::@return breturn: - //SEG365 [179] return + //SEG361 [175] return rts } -//SEG366 mul16u +//SEG362 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage($2b) a, word zeropage($29) b) mul16u: { - .label _1 = $bc + .label _1 = $b4 .label mb = $31 .label a = $2b .label res = $2d - .label return = $a8 + .label return = $a4 .label b = $29 - .label return_3 = $c9 - //SEG367 [181] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + .label return_3 = $c1 + //SEG363 [177] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -6096,44 +6044,44 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG368 [182] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG364 [178] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG369 [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG370 [182] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG365 [178] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG366 [178] 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 - //SEG371 [182] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG367 [178] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG372 mul16u::@1 + //SEG368 mul16u::@1 b1: - //SEG373 [183] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG369 [179] 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 - //SEG374 mul16u::@return + //SEG370 mul16u::@return breturn: - //SEG375 [184] return + //SEG371 [180] return rts - //SEG376 mul16u::@2 + //SEG372 mul16u::@2 b2: - //SEG377 [185] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vwuz2_band_vbuc1 + //SEG373 [181] (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 - //SEG378 [186] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuz1_eq_0_then_la1 + //SEG374 [182] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b4_from_b2 jmp b7 - //SEG379 mul16u::@7 + //SEG375 mul16u::@7 b7: - //SEG380 [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG376 [183] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -6147,30 +6095,30 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG381 [188] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG377 [184] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG382 [188] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG378 [184] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG383 mul16u::@4 + //SEG379 mul16u::@4 b4: - //SEG384 [189] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG380 [185] (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 - //SEG385 [190] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG381 [186] (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 - //SEG386 [182] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG382 [178] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //SEG387 [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG388 [182] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG389 [182] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG383 [178] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG384 [178] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG385 [178] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG390 muls16s +//SEG386 muls16s // Slow multiplication of signed words // Perform a signed multiplication by repeated addition/subtraction // muls16s(signed word zeropage($5a) a, signed word zeropage($5c) b) @@ -6182,27 +6130,27 @@ muls16s: { .label a = $5a .label b = $5c .label return_2 = $5e - //SEG391 [191] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 -- vwsz1_lt_0_then_la1 + //SEG387 [187] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 -- vwsz1_lt_0_then_la1 lda a+1 bmi b5_from_muls16s jmp b6 - //SEG392 muls16s::@6 + //SEG388 muls16s::@6 b6: - //SEG393 [192] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 -- vwsz1_le_0_then_la1 + //SEG389 [188] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 -- vwsz1_le_0_then_la1 lda a+1 bmi b4_from_b6 bne !+ lda a beq b4_from_b6 !: - //SEG394 [193] phi from muls16s::@6 to muls16s::@3 [phi:muls16s::@6->muls16s::@3] + //SEG390 [189] phi from muls16s::@6 to muls16s::@3 [phi:muls16s::@6->muls16s::@3] b3_from_b6: - //SEG395 [193] phi (signed word) muls16s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#0] -- vwsz1=vbuc1 + //SEG391 [189] phi (signed word) muls16s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#0] -- vwsz1=vbuc1 lda #<0 sta j lda #>0 sta j+1 - //SEG396 [193] phi (signed dword) muls16s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#1] -- vdsz1=vbuc1 + //SEG392 [189] phi (signed dword) muls16s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#1] -- vdsz1=vbuc1 lda #<0 sta m lda #>0 @@ -6212,14 +6160,14 @@ muls16s: { lda #>0>>$10 sta m+3 jmp b3 - //SEG397 [193] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] + //SEG393 [189] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] b3_from_b3: - //SEG398 [193] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy - //SEG399 [193] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy + //SEG394 [189] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy + //SEG395 [189] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy jmp b3 - //SEG400 muls16s::@3 + //SEG396 muls16s::@3 b3: - //SEG401 [194] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 + //SEG397 [190] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -6239,26 +6187,26 @@ muls16s: { lda m+3 adc $ff sta m+3 - //SEG402 [195] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 + //SEG398 [191] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 inc j bne !+ inc j+1 !: - //SEG403 [196] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 + //SEG399 [192] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 lda j+1 cmp a+1 bne b3_from_b3 lda j cmp a bne b3_from_b3 - //SEG404 [197] phi from muls16s::@3 muls16s::@5 to muls16s::@4 [phi:muls16s::@3/muls16s::@5->muls16s::@4] + //SEG400 [193] phi from muls16s::@3 muls16s::@5 to muls16s::@4 [phi:muls16s::@3/muls16s::@5->muls16s::@4] b4_from_b3: b4_from_b5: - //SEG405 [197] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@5->muls16s::@4#0] -- register_copy + //SEG401 [193] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@5->muls16s::@4#0] -- register_copy jmp b4 - //SEG406 [197] phi from muls16s::@6 to muls16s::@4 [phi:muls16s::@6->muls16s::@4] + //SEG402 [193] phi from muls16s::@6 to muls16s::@4 [phi:muls16s::@6->muls16s::@4] b4_from_b6: - //SEG407 [197] phi (signed dword) muls16s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@4#0] -- vdsz1=vbuc1 + //SEG403 [193] phi (signed dword) muls16s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@4#0] -- vdsz1=vbuc1 lda #<0 sta return lda #>0 @@ -6268,21 +6216,21 @@ muls16s: { lda #>0>>$10 sta return+3 jmp b4 - //SEG408 muls16s::@4 + //SEG404 muls16s::@4 b4: jmp breturn - //SEG409 muls16s::@return + //SEG405 muls16s::@return breturn: - //SEG410 [198] return + //SEG406 [194] return rts - //SEG411 [199] phi from muls16s to muls16s::@5 [phi:muls16s->muls16s::@5] + //SEG407 [195] phi from muls16s to muls16s::@5 [phi:muls16s->muls16s::@5] b5_from_muls16s: - //SEG412 [199] phi (signed word) muls16s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#0] -- vwsz1=vbuc1 + //SEG408 [195] phi (signed word) muls16s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#0] -- vwsz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG413 [199] phi (signed dword) muls16s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#1] -- vdsz1=vbuc1 + //SEG409 [195] phi (signed dword) muls16s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#1] -- vdsz1=vbuc1 lda #<0 sta m lda #>0 @@ -6292,14 +6240,14 @@ muls16s: { lda #>0>>$10 sta m+3 jmp b5 - //SEG414 [199] phi from muls16s::@5 to muls16s::@5 [phi:muls16s::@5->muls16s::@5] + //SEG410 [195] phi from muls16s::@5 to muls16s::@5 [phi:muls16s::@5->muls16s::@5] b5_from_b5: - //SEG415 [199] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@5->muls16s::@5#0] -- register_copy - //SEG416 [199] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@5->muls16s::@5#1] -- register_copy + //SEG411 [195] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@5->muls16s::@5#0] -- register_copy + //SEG412 [195] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@5->muls16s::@5#1] -- register_copy jmp b5 - //SEG417 muls16s::@5 + //SEG413 muls16s::@5 b5: - //SEG418 [200] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 + //SEG414 [196] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -6319,13 +6267,13 @@ muls16s: { lda m+3 sbc $ff sta m+3 - //SEG419 [201] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 + //SEG415 [197] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 lda i bne !+ dec i+1 !: dec i - //SEG420 [202] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 -- vwsz1_neq_vwsz2_then_la1 + //SEG416 [198] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 -- vwsz1_neq_vwsz2_then_la1 lda i+1 cmp a+1 bne b5_from_b5 @@ -6334,74 +6282,74 @@ muls16s: { bne b5_from_b5 jmp b4_from_b5 } -//SEG421 mul16u_compare +//SEG417 mul16u_compare // Perform many possible word multiplications (slow and fast) and compare the results mul16u_compare: { .label a = $3e .label b = $40 - .label ms = $c5 - .label mn = $cd - .label mf = $d5 + .label ms = $bd + .label mn = $c5 + .label mf = $cd .label j = $42 .label i = $3d .label ok = $43 - //SEG422 [204] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] + //SEG418 [200] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] b1_from_mul16u_compare: - //SEG423 [204] phi (byte) mul16u_compare::i#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 + //SEG419 [200] phi (byte) mul16u_compare::i#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG424 [204] phi (word) mul16u_compare::b#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 + //SEG420 [200] phi (word) mul16u_compare::b#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 lda #<0 sta b lda #>0 sta b+1 - //SEG425 [204] phi (word) mul16u_compare::a#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 + //SEG421 [200] phi (word) mul16u_compare::a#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 lda #<0 sta a lda #>0 sta a+1 - //SEG426 [204] phi (byte*) print_char_cursor#139 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 + //SEG422 [200] phi (byte*) print_char_cursor#139 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 jmp b1 - //SEG427 [204] phi from mul16u_compare::@10 to mul16u_compare::@1 [phi:mul16u_compare::@10->mul16u_compare::@1] + //SEG423 [200] phi from mul16u_compare::@10 to mul16u_compare::@1 [phi:mul16u_compare::@10->mul16u_compare::@1] b1_from_b10: - //SEG428 [204] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@10->mul16u_compare::@1#0] -- register_copy - //SEG429 [204] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@10->mul16u_compare::@1#1] -- register_copy - //SEG430 [204] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@10->mul16u_compare::@1#2] -- register_copy - //SEG431 [204] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@10->mul16u_compare::@1#3] -- register_copy + //SEG424 [200] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@10->mul16u_compare::@1#0] -- register_copy + //SEG425 [200] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@10->mul16u_compare::@1#1] -- register_copy + //SEG426 [200] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@10->mul16u_compare::@1#2] -- register_copy + //SEG427 [200] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@10->mul16u_compare::@1#3] -- register_copy jmp b1 - //SEG432 mul16u_compare::@1 + //SEG428 mul16u_compare::@1 b1: - //SEG433 [205] call print_str - //SEG434 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] + //SEG429 [201] call print_str + //SEG430 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] print_str_from_b1: - //SEG435 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy - //SEG436 [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 + //SEG431 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy + //SEG432 [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG437 [206] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] + //SEG433 [202] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] b2_from_b1: - //SEG438 [206] phi (byte) mul16u_compare::j#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuz1=vbuc1 + //SEG434 [202] phi (byte) mul16u_compare::j#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuz1=vbuc1 lda #0 sta j - //SEG439 [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy - //SEG440 [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy + //SEG435 [202] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy + //SEG436 [202] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy jmp b2 - //SEG441 [206] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] + //SEG437 [202] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] b2_from_b5: - //SEG442 [206] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy - //SEG443 [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy - //SEG444 [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy + //SEG438 [202] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy + //SEG439 [202] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy + //SEG440 [202] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy jmp b2 - //SEG445 mul16u_compare::@2 + //SEG441 mul16u_compare::@2 b2: - //SEG446 [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 -- vwuz1=vwuz1_plus_vwuc1 + //SEG442 [203] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 -- vwuz1=vwuz1_plus_vwuc1 clc lda a adc #<$d2b @@ -6409,7 +6357,7 @@ mul16u_compare: { lda a+1 adc #>$d2b sta a+1 - //SEG447 [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 -- vwuz1=vwuz1_plus_vwuc1 + //SEG443 [204] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 -- vwuz1=vwuz1_plus_vwuc1 clc lda b adc #<$ffd @@ -6417,19 +6365,19 @@ mul16u_compare: { lda b+1 adc #>$ffd sta b+1 - //SEG448 [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG444 [205] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta muls16u.a lda a+1 sta muls16u.a+1 - //SEG449 [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 + //SEG445 [206] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 lda b sta muls16u.b lda b+1 sta muls16u.b+1 - //SEG450 [211] call muls16u + //SEG446 [207] call muls16u jsr muls16u - //SEG451 [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 -- vduz1=vduz2 + //SEG447 [208] (dword) muls16u::return#2 ← (dword) muls16u::return#0 -- vduz1=vduz2 lda muls16u.return sta muls16u.return_2 lda muls16u.return+1 @@ -6439,9 +6387,9 @@ mul16u_compare: { lda muls16u.return+3 sta muls16u.return_2+3 jmp b13 - //SEG452 mul16u_compare::@13 + //SEG448 mul16u_compare::@13 b13: - //SEG453 [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 -- vduz1=vduz2 + //SEG449 [209] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 -- vduz1=vduz2 lda muls16u.return_2 sta ms lda muls16u.return_2+1 @@ -6450,23 +6398,23 @@ mul16u_compare: { sta ms+2 lda muls16u.return_2+3 sta ms+3 - //SEG454 [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG450 [210] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG455 [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 + //SEG451 [211] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 lda b sta mul16u.b lda b+1 sta mul16u.b+1 - //SEG456 [216] call mul16u - //SEG457 [180] phi from mul16u_compare::@13 to mul16u [phi:mul16u_compare::@13->mul16u] + //SEG452 [212] call mul16u + //SEG453 [176] phi from mul16u_compare::@13 to mul16u [phi:mul16u_compare::@13->mul16u] mul16u_from_b13: - //SEG458 [180] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@13->mul16u#0] -- register_copy - //SEG459 [180] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mul16u_compare::@13->mul16u#1] -- register_copy + //SEG454 [176] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@13->mul16u#0] -- register_copy + //SEG455 [176] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mul16u_compare::@13->mul16u#1] -- register_copy jsr mul16u - //SEG460 [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG456 [213] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return_3 lda mul16u.res+1 @@ -6476,9 +6424,9 @@ mul16u_compare: { lda mul16u.res+3 sta mul16u.return_3+3 jmp b14 - //SEG461 mul16u_compare::@14 + //SEG457 mul16u_compare::@14 b14: - //SEG462 [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 -- vduz1=vduz2 + //SEG458 [214] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 -- vduz1=vduz2 lda mul16u.return_3 sta mn lda mul16u.return_3+1 @@ -6487,23 +6435,23 @@ mul16u_compare: { sta mn+2 lda mul16u.return_3+3 sta mn+3 - //SEG463 [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG459 [215] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mulf16u.a lda a+1 sta mulf16u.a+1 - //SEG464 [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 + //SEG460 [216] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 lda b sta mulf16u.b lda b+1 sta mulf16u.b+1 - //SEG465 [221] call mulf16u - //SEG466 [155] phi from mul16u_compare::@14 to mulf16u [phi:mul16u_compare::@14->mulf16u] + //SEG461 [217] call mulf16u + //SEG462 [153] phi from mul16u_compare::@14 to mulf16u [phi:mul16u_compare::@14->mulf16u] mulf16u_from_b14: - //SEG467 [155] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@14->mulf16u#0] -- register_copy - //SEG468 [155] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@14->mulf16u#1] -- register_copy + //SEG463 [153] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@14->mulf16u#0] -- register_copy + //SEG464 [153] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@14->mulf16u#1] -- register_copy jsr mulf16u - //SEG469 [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 -- vduz1=vduz2 + //SEG465 [218] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 -- vduz1=vduz2 lda mulf16u.return sta mulf16u.return_3 lda mulf16u.return+1 @@ -6513,9 +6461,9 @@ mul16u_compare: { lda mulf16u.return+3 sta mulf16u.return_3+3 jmp b15 - //SEG470 mul16u_compare::@15 + //SEG466 mul16u_compare::@15 b15: - //SEG471 [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 -- vduz1=vduz2 + //SEG467 [219] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 -- vduz1=vduz2 lda mulf16u.return_3 sta mf lda mulf16u.return_3+1 @@ -6524,7 +6472,7 @@ mul16u_compare: { sta mf+2 lda mulf16u.return_3+3 sta mf+3 - //SEG472 [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 + //SEG468 [220] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 lda ms cmp mf bne !+ @@ -6538,26 +6486,26 @@ mul16u_compare: { cmp mf+3 beq b3_from_b15 !: - //SEG473 [225] phi from mul16u_compare::@15 to mul16u_compare::@6 [phi:mul16u_compare::@15->mul16u_compare::@6] + //SEG469 [221] phi from mul16u_compare::@15 to mul16u_compare::@6 [phi:mul16u_compare::@15->mul16u_compare::@6] b6_from_b15: jmp b6 - //SEG474 mul16u_compare::@6 + //SEG470 mul16u_compare::@6 b6: - //SEG475 [226] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] + //SEG471 [222] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] b3_from_b6: - //SEG476 [226] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuz1=vbuc1 + //SEG472 [222] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuz1=vbuc1 lda #0 sta ok jmp b3 - //SEG477 [226] phi from mul16u_compare::@15 to mul16u_compare::@3 [phi:mul16u_compare::@15->mul16u_compare::@3] + //SEG473 [222] phi from mul16u_compare::@15 to mul16u_compare::@3 [phi:mul16u_compare::@15->mul16u_compare::@3] b3_from_b15: - //SEG478 [226] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul16u_compare::@15->mul16u_compare::@3#0] -- vbuz1=vbuc1 + //SEG474 [222] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul16u_compare::@15->mul16u_compare::@3#0] -- vbuz1=vbuc1 lda #1 sta ok jmp b3 - //SEG479 mul16u_compare::@3 + //SEG475 mul16u_compare::@3 b3: - //SEG480 [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 -- vduz1_eq_vduz2_then_la1 + //SEG476 [223] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 -- vduz1_eq_vduz2_then_la1 lda ms cmp mn bne !+ @@ -6571,35 +6519,35 @@ mul16u_compare: { cmp mn+3 beq b22_from_b3 !: - //SEG481 [228] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] + //SEG477 [224] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] b4_from_b3: - //SEG482 [228] phi (byte) mul16u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuz1=vbuc1 + //SEG478 [224] phi (byte) mul16u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuz1=vbuc1 lda #0 sta ok jmp b4 - //SEG483 mul16u_compare::@4 + //SEG479 mul16u_compare::@4 b4: - //SEG484 [229] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5 -- vbuz1_neq_0_then_la1 + //SEG480 [225] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5 -- vbuz1_neq_0_then_la1 lda ok cmp #0 bne b5 jmp b8 - //SEG485 mul16u_compare::@8 + //SEG481 mul16u_compare::@8 b8: - //SEG486 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG482 [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG487 [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG483 [227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u_error.a lda a+1 sta mul16u_error.a+1 - //SEG488 [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 + //SEG484 [228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 lda b sta mul16u_error.b lda b+1 sta mul16u_error.b+1 - //SEG489 [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 -- vduz1=vduz2 + //SEG485 [229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 -- vduz1=vduz2 lda ms sta mul16u_error.ms lda ms+1 @@ -6608,7 +6556,7 @@ mul16u_compare: { sta mul16u_error.ms+2 lda ms+3 sta mul16u_error.ms+3 - //SEG490 [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 -- vduz1=vduz2 + //SEG486 [230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 -- vduz1=vduz2 lda mn sta mul16u_error.mn lda mn+1 @@ -6617,7 +6565,7 @@ mul16u_compare: { sta mul16u_error.mn+2 lda mn+3 sta mul16u_error.mn+3 - //SEG491 [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 -- vduz1=vduz2 + //SEG487 [231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 -- vduz1=vduz2 lda mf sta mul16u_error.mf lda mf+1 @@ -6626,168 +6574,168 @@ mul16u_compare: { sta mul16u_error.mf+2 lda mf+3 sta mul16u_error.mf+3 - //SEG492 [236] call mul16u_error - //SEG493 [249] phi from mul16u_compare::@8 to mul16u_error [phi:mul16u_compare::@8->mul16u_error] + //SEG488 [232] call mul16u_error + //SEG489 [245] phi from mul16u_compare::@8 to mul16u_error [phi:mul16u_compare::@8->mul16u_error] mul16u_error_from_b8: jsr mul16u_error jmp breturn - //SEG494 mul16u_compare::@return + //SEG490 mul16u_compare::@return breturn: - //SEG495 [237] return + //SEG491 [233] return rts - //SEG496 mul16u_compare::@5 + //SEG492 mul16u_compare::@5 b5: - //SEG497 [238] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuz1=_inc_vbuz1 + //SEG493 [234] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuz1=_inc_vbuz1 inc j - //SEG498 [239] if((byte) mul16u_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG494 [235] if((byte) mul16u_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@2 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #$10 bne b2_from_b5 jmp b10 - //SEG499 mul16u_compare::@10 + //SEG495 mul16u_compare::@10 b10: - //SEG500 [240] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 + //SEG496 [236] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 inc i - //SEG501 [241] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG497 [237] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b10 - //SEG502 [242] phi from mul16u_compare::@10 to mul16u_compare::@11 [phi:mul16u_compare::@10->mul16u_compare::@11] + //SEG498 [238] phi from mul16u_compare::@10 to mul16u_compare::@11 [phi:mul16u_compare::@10->mul16u_compare::@11] b11_from_b10: jmp b11 - //SEG503 mul16u_compare::@11 + //SEG499 mul16u_compare::@11 b11: - //SEG504 [243] call print_ln - //SEG505 [59] phi from mul16u_compare::@11 to print_ln [phi:mul16u_compare::@11->print_ln] + //SEG500 [239] call print_ln + //SEG501 [59] phi from mul16u_compare::@11 to print_ln [phi:mul16u_compare::@11->print_ln] print_ln_from_b11: - //SEG506 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@11->print_ln#0] -- register_copy - //SEG507 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare::@11->print_ln#1] -- pbuz1=pbuc1 + //SEG502 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@11->print_ln#0] -- register_copy + //SEG503 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare::@11->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln jmp b17 - //SEG508 mul16u_compare::@17 + //SEG504 mul16u_compare::@17 b17: - //SEG509 [244] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG505 [240] (byte*~) print_char_cursor#192 ← (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 - //SEG510 [245] call print_str - //SEG511 [64] phi from mul16u_compare::@17 to print_str [phi:mul16u_compare::@17->print_str] + //SEG506 [241] call print_str + //SEG507 [64] phi from mul16u_compare::@17 to print_str [phi:mul16u_compare::@17->print_str] print_str_from_b17: - //SEG512 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#192 [phi:mul16u_compare::@17->print_str#0] -- register_copy - //SEG513 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str1 [phi:mul16u_compare::@17->print_str#1] -- pbuz1=pbuc1 + //SEG508 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#192 [phi:mul16u_compare::@17->print_str#0] -- register_copy + //SEG509 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str1 [phi:mul16u_compare::@17->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG514 [246] phi from mul16u_compare::@17 to mul16u_compare::@18 [phi:mul16u_compare::@17->mul16u_compare::@18] + //SEG510 [242] phi from mul16u_compare::@17 to mul16u_compare::@18 [phi:mul16u_compare::@17->mul16u_compare::@18] b18_from_b17: jmp b18 - //SEG515 mul16u_compare::@18 + //SEG511 mul16u_compare::@18 b18: - //SEG516 [247] call print_ln - //SEG517 [59] phi from mul16u_compare::@18 to print_ln [phi:mul16u_compare::@18->print_ln] + //SEG512 [243] call print_ln + //SEG513 [59] phi from mul16u_compare::@18 to print_ln [phi:mul16u_compare::@18->print_ln] print_ln_from_b18: - //SEG518 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@18->print_ln#0] -- register_copy - //SEG519 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@18->print_ln#1] -- register_copy + //SEG514 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@18->print_ln#0] -- register_copy + //SEG515 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@18->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG520 [248] phi from mul16u_compare::@3 to mul16u_compare::@22 [phi:mul16u_compare::@3->mul16u_compare::@22] + //SEG516 [244] phi from mul16u_compare::@3 to mul16u_compare::@22 [phi:mul16u_compare::@3->mul16u_compare::@22] b22_from_b3: jmp b22 - //SEG521 mul16u_compare::@22 + //SEG517 mul16u_compare::@22 b22: - //SEG522 [228] phi from mul16u_compare::@22 to mul16u_compare::@4 [phi:mul16u_compare::@22->mul16u_compare::@4] + //SEG518 [224] phi from mul16u_compare::@22 to mul16u_compare::@4 [phi:mul16u_compare::@22->mul16u_compare::@4] b4_from_b22: - //SEG523 [228] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@22->mul16u_compare::@4#0] -- register_copy + //SEG519 [224] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@22->mul16u_compare::@4#0] -- register_copy jmp b4 str1: .text "word multiply results match!@" } -//SEG524 mul16u_error -// mul16u_error(word zeropage($d9) a, word zeropage($db) b, dword zeropage($dd) ms, dword zeropage($e1) mn, dword zeropage($e5) mf) +//SEG520 mul16u_error +// mul16u_error(word zeropage($d1) a, word zeropage($d3) b, dword zeropage($d5) ms, dword zeropage($d9) mn, dword zeropage($dd) mf) mul16u_error: { - .label a = $d9 - .label b = $db - .label ms = $dd - .label mn = $e1 - .label mf = $e5 - //SEG525 [250] call print_str - //SEG526 [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] + .label a = $d1 + .label b = $d3 + .label ms = $d5 + .label mn = $d9 + .label mf = $dd + //SEG521 [246] call print_str + //SEG522 [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] print_str_from_mul16u_error: - //SEG527 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16u_error->print_str#0] -- register_copy - //SEG528 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str [phi:mul16u_error->print_str#1] -- pbuz1=pbuc1 + //SEG523 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16u_error->print_str#0] -- register_copy + //SEG524 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str [phi:mul16u_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b1 - //SEG529 mul16u_error::@1 + //SEG525 mul16u_error::@1 b1: - //SEG530 [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 -- vwuz1=vwuz2 + //SEG526 [247] (word) print_word::w#3 ← (word) mul16u_error::a#0 -- vwuz1=vwuz2 lda a sta print_word.w lda a+1 sta print_word.w+1 - //SEG531 [252] call print_word - //SEG532 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] + //SEG527 [248] call print_word + //SEG528 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] print_word_from_b1: - //SEG533 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@1->print_word#0] -- register_copy - //SEG534 [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy + //SEG529 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@1->print_word#0] -- register_copy + //SEG530 [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy jsr print_word - //SEG535 [253] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] + //SEG531 [249] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] b2_from_b1: jmp b2 - //SEG536 mul16u_error::@2 + //SEG532 mul16u_error::@2 b2: - //SEG537 [254] call print_str - //SEG538 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] + //SEG533 [250] call print_str + //SEG534 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] print_str_from_b2: - //SEG539 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy - //SEG540 [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG535 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy + //SEG536 [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b3 - //SEG541 mul16u_error::@3 + //SEG537 mul16u_error::@3 b3: - //SEG542 [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 + //SEG538 [251] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 lda b sta print_word.w lda b+1 sta print_word.w+1 - //SEG543 [256] call print_word - //SEG544 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] + //SEG539 [252] call print_word + //SEG540 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] print_word_from_b3: - //SEG545 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@3->print_word#0] -- register_copy - //SEG546 [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy + //SEG541 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@3->print_word#0] -- register_copy + //SEG542 [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy jsr print_word - //SEG547 [257] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] + //SEG543 [253] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] b4_from_b3: jmp b4 - //SEG548 mul16u_error::@4 + //SEG544 mul16u_error::@4 b4: - //SEG549 [258] call print_str - //SEG550 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] + //SEG545 [254] call print_str + //SEG546 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] print_str_from_b4: - //SEG551 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy - //SEG552 [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG547 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy + //SEG548 [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b5 - //SEG553 mul16u_error::@5 + //SEG549 mul16u_error::@5 b5: - //SEG554 [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 -- vduz1=vduz2 + //SEG550 [255] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 -- vduz1=vduz2 lda ms sta print_dword.dw lda ms+1 @@ -6796,31 +6744,31 @@ mul16u_error: { sta print_dword.dw+2 lda ms+3 sta print_dword.dw+3 - //SEG555 [260] call print_dword - //SEG556 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] + //SEG551 [256] call print_dword + //SEG552 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] print_dword_from_b5: - //SEG557 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@5->print_dword#0] -- register_copy - //SEG558 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy + //SEG553 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@5->print_dword#0] -- register_copy + //SEG554 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy jsr print_dword - //SEG559 [261] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] + //SEG555 [257] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] b6_from_b5: jmp b6 - //SEG560 mul16u_error::@6 + //SEG556 mul16u_error::@6 b6: - //SEG561 [262] call print_str - //SEG562 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] + //SEG557 [258] call print_str + //SEG558 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] print_str_from_b6: - //SEG563 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy - //SEG564 [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG559 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy + //SEG560 [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str jmp b7 - //SEG565 mul16u_error::@7 + //SEG561 mul16u_error::@7 b7: - //SEG566 [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 + //SEG562 [259] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 lda mn sta print_dword.dw lda mn+1 @@ -6829,31 +6777,31 @@ mul16u_error: { sta print_dword.dw+2 lda mn+3 sta print_dword.dw+3 - //SEG567 [264] call print_dword - //SEG568 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] + //SEG563 [260] call print_dword + //SEG564 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] print_dword_from_b7: - //SEG569 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@7->print_dword#0] -- register_copy - //SEG570 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy + //SEG565 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@7->print_dword#0] -- register_copy + //SEG566 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy jsr print_dword - //SEG571 [265] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] + //SEG567 [261] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] b8_from_b7: jmp b8 - //SEG572 mul16u_error::@8 + //SEG568 mul16u_error::@8 b8: - //SEG573 [266] call print_str - //SEG574 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] + //SEG569 [262] call print_str + //SEG570 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] print_str_from_b8: - //SEG575 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy - //SEG576 [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG571 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy + //SEG572 [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str jmp b9 - //SEG577 mul16u_error::@9 + //SEG573 mul16u_error::@9 b9: - //SEG578 [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 + //SEG574 [263] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 lda mf sta print_dword.dw lda mf+1 @@ -6862,59 +6810,59 @@ mul16u_error: { sta print_dword.dw+2 lda mf+3 sta print_dword.dw+3 - //SEG579 [268] call print_dword - //SEG580 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] + //SEG575 [264] call print_dword + //SEG576 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] print_dword_from_b9: - //SEG581 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@9->print_dword#0] -- register_copy - //SEG582 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy + //SEG577 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@9->print_dword#0] -- register_copy + //SEG578 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy jsr print_dword - //SEG583 [269] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] + //SEG579 [265] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] b10_from_b9: jmp b10 - //SEG584 mul16u_error::@10 + //SEG580 mul16u_error::@10 b10: - //SEG585 [270] call print_ln - //SEG586 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] + //SEG581 [266] call print_ln + //SEG582 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] print_ln_from_b10: - //SEG587 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16u_error::@10->print_ln#0] -- register_copy - //SEG588 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 + //SEG583 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16u_error::@10->print_ln#0] -- register_copy + //SEG584 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln jmp breturn - //SEG589 mul16u_error::@return + //SEG585 mul16u_error::@return breturn: - //SEG590 [271] return + //SEG586 [267] return rts str: .text "multiply mismatch @" } -//SEG591 muls16u +//SEG587 muls16u // Slow multiplication of unsigned words // Calculate an unsigned multiplication by repeated addition -// muls16u(word zeropage($bd) a, word zeropage($bf) b) +// muls16u(word zeropage($b5) a, word zeropage($b7) b) muls16u: { .label return = $46 .label m = $46 .label i = $44 - .label a = $bd - .label b = $bf - .label return_2 = $c1 - //SEG592 [272] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 + .label a = $b5 + .label b = $b7 + .label return_2 = $b9 + //SEG588 [268] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 lda a bne !+ lda a+1 beq b1_from_muls16u !: - //SEG593 [273] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] + //SEG589 [269] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] b2_from_muls16u: - //SEG594 [273] phi (word) muls16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 + //SEG590 [269] phi (word) muls16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG595 [273] phi (dword) muls16u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 + //SEG591 [269] phi (dword) muls16u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 lda #0 sta m lda #0 @@ -6922,14 +6870,14 @@ muls16u: { sta m+2 sta m+3 jmp b2 - //SEG596 [273] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] + //SEG592 [269] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] b2_from_b2: - //SEG597 [273] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy - //SEG598 [273] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy + //SEG593 [269] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy + //SEG594 [269] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy jmp b2 - //SEG599 muls16u::@2 + //SEG595 muls16u::@2 b2: - //SEG600 [274] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 + //SEG596 [270] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 lda m clc adc b @@ -6943,25 +6891,25 @@ muls16u: { lda m+3 adc #0 sta m+3 - //SEG601 [275] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 + //SEG597 [271] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG602 [276] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 + //SEG598 [272] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 lda i+1 cmp a+1 bne b2_from_b2 lda i cmp a bne b2_from_b2 - //SEG603 [277] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] + //SEG599 [273] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] b1_from_b2: - //SEG604 [277] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy + //SEG600 [273] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy jmp b1 - //SEG605 [277] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] + //SEG601 [273] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] b1_from_muls16u: - //SEG606 [277] phi (dword) muls16u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 + //SEG602 [273] phi (dword) muls16u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 lda #0 sta return lda #0 @@ -6969,20 +6917,20 @@ muls16u: { sta return+2 sta return+3 jmp b1 - //SEG607 muls16u::@1 + //SEG603 muls16u::@1 b1: jmp breturn - //SEG608 muls16u::@return + //SEG604 muls16u::@return breturn: - //SEG609 [278] return + //SEG605 [274] return rts } -//SEG610 mulf_init +//SEG606 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { - .label _2 = $e9 - .label _5 = $ea - .label _6 = $eb + .label _2 = $e1 + .label _5 = $e2 + .label _6 = $e3 .label c = $4a .label sqr1_hi = $4d .label sqr = $50 @@ -6992,88 +6940,88 @@ mulf_init: { .label x_255 = $52 .label sqr2_lo = $53 .label dir = $57 - //SEG611 [280] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG607 [276] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //SEG612 [280] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG608 [276] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG613 [280] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG609 [276] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG614 [280] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG610 [276] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG615 [280] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG611 [276] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #<0 sta sqr lda #>0 sta sqr+1 - //SEG616 [280] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuz1=vbuc1 + //SEG612 [276] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuz1=vbuc1 lda #0 sta c jmp b1 - //SEG617 [280] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG613 [276] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //SEG618 [280] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG619 [280] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG620 [280] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG621 [280] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG622 [280] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG614 [276] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG615 [276] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG616 [276] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG617 [276] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG618 [276] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG623 mulf_init::@1 + //SEG619 mulf_init::@1 b1: - //SEG624 [281] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 + //SEG620 [277] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG625 [282] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG621 [278] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and c sta _2 - //SEG626 [283] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuz1_neq_0_then_la1 + //SEG622 [279] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuz1_neq_0_then_la1 lda _2 cmp #0 bne b2_from_b1 jmp b5 - //SEG627 mulf_init::@5 + //SEG623 mulf_init::@5 b5: - //SEG628 [284] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG624 [280] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG629 [285] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG625 [281] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG630 [286] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG626 [282] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] b2_from_b1: b2_from_b5: - //SEG631 [286] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy - //SEG632 [286] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy + //SEG627 [282] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy + //SEG628 [282] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy jmp b2 - //SEG633 mulf_init::@2 + //SEG629 mulf_init::@2 b2: - //SEG634 [287] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 + //SEG630 [283] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 lda sqr sta _5 - //SEG635 [288] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 + //SEG631 [284] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 lda _5 ldy #0 sta (sqr1_lo),y - //SEG636 [289] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 + //SEG632 [285] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 lda sqr+1 sta _6 - //SEG637 [290] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuz2 + //SEG633 [286] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuz2 lda _6 ldy #0 sta (sqr1_hi),y - //SEG638 [291] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG634 [287] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG639 [292] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG635 [288] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -7081,84 +7029,84 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG640 [293] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG636 [289] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG641 [294] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG637 [290] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo cmp #mulf_init::@3] + //SEG638 [291] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] b3_from_b2: - //SEG643 [295] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 + //SEG639 [291] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG644 [295] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 + //SEG640 [291] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG645 [295] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 + //SEG641 [291] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG646 [295] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuz1=vbuc1 + //SEG642 [291] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuz1=vbuc1 lda #-1 sta x_255 jmp b3 - //SEG647 [295] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG643 [291] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] b3_from_b4: - //SEG648 [295] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy - //SEG649 [295] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy - //SEG650 [295] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy - //SEG651 [295] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG644 [291] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG645 [291] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG646 [291] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG647 [291] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy jmp b3 - //SEG652 mulf_init::@3 + //SEG648 mulf_init::@3 b3: - //SEG653 [296] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG649 [292] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy x_255 lda mulf_sqr1_lo,y ldy #0 sta (sqr2_lo),y - //SEG654 [297] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG650 [293] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy x_255 lda mulf_sqr1_hi,y ldy #0 sta (sqr2_hi),y - //SEG655 [298] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG651 [294] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG656 [299] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG652 [295] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 lda x_255 clc adc dir sta x_255 - //SEG657 [300] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuz1_neq_0_then_la1 + //SEG653 [296] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuz1_neq_0_then_la1 lda x_255 cmp #0 bne b12_from_b3 - //SEG658 [301] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG654 [297] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] b4_from_b3: - //SEG659 [301] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG655 [297] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b4 - //SEG660 mulf_init::@4 + //SEG656 mulf_init::@4 b4: - //SEG661 [302] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG657 [298] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG662 [303] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 + //SEG658 [299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b3_from_b4 @@ -7166,58 +7114,58 @@ mulf_init: { cmp #mulf_init::@12] + //SEG664 [303] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] b12_from_b3: jmp b12 - //SEG669 mulf_init::@12 + //SEG665 mulf_init::@12 b12: - //SEG670 [301] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG666 [297] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] b4_from_b12: - //SEG671 [301] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG667 [297] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy jmp b4 } -//SEG672 print_cls +//SEG668 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $58 - //SEG673 [309] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG669 [305] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG674 [309] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG670 [305] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG675 [309] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG671 [305] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG676 [309] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG672 [305] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG677 print_cls::@1 + //SEG673 print_cls::@1 b1: - //SEG678 [310] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG674 [306] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG679 [311] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG675 [307] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG680 [312] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG676 [308] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -7225,9 +7173,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG681 print_cls::@return + //SEG677 print_cls::@return breturn: - //SEG682 [313] return + //SEG678 [309] return rts } print_hextab: .text "0123456789abcdef" @@ -7279,13 +7227,13 @@ Statement [43] (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compa Statement [44] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#128 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ) always clobbers reg byte a Statement [45] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ) always clobbers reg byte a Statement [54] (byte*~) print_char_cursor#185 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#185 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#185 ] ) always clobbers reg byte a -Statement [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#129 ] ( main:2::mul16s_compare:11::print_ln:53 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::print_ln:57 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::mul16s_error:46::print_ln:92 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:243 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:247 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::mul16u_error:236::print_ln:270 [ print_line_cursor#1 print_char_cursor#129 ] ) always clobbers reg byte a -Statement [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#129) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#129 ] ( main:2::mul16s_compare:11::print_ln:53 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::print_ln:57 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::mul16s_error:46::print_ln:92 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:243 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:247 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::mul16u_error:236::print_ln:270 [ print_line_cursor#1 print_char_cursor#129 ] ) always clobbers reg byte a -Statement [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 [ print_char_cursor#128 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::print_str:55 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:205 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:245 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:250 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:254 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:258 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:262 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:266 [ mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] ) always clobbers reg byte a reg byte y +Statement [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#129 ] ( main:2::mul16s_compare:11::print_ln:53 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::print_ln:57 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::mul16s_error:46::print_ln:92 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:239 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:243 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::mul16u_error:232::print_ln:266 [ print_line_cursor#1 print_char_cursor#129 ] ) always clobbers reg byte a +Statement [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#129) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#129 ] ( main:2::mul16s_compare:11::print_ln:53 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::print_ln:57 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::mul16s_error:46::print_ln:92 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:239 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:243 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::mul16u_error:232::print_ln:266 [ print_line_cursor#1 print_char_cursor#129 ] ) always clobbers reg byte a +Statement [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 [ print_char_cursor#128 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::print_str:55 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:201 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:241 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:246 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:250 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:254 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:258 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:262 [ mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] -Statement [68] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#15) [ print_char_cursor#128 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::print_str:55 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:205 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:245 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:250 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:254 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:258 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:262 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:266 [ mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] ) always clobbers reg byte a reg byte y +Statement [68] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#15) [ print_char_cursor#128 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::print_str:55 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:201 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:241 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:246 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:250 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:254 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:258 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:262 [ mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] ) always clobbers reg byte a reg byte y Statement [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:46 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ) always clobbers reg byte a Statement [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:46 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ) always clobbers reg byte a Statement [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ( main:2::mul16s_compare:11::mul16s_error:46 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ) always clobbers reg byte a @@ -7294,14 +7242,14 @@ Statement [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error Statement [95] if((signed dword) print_sdword::dw#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sdword::@1 [ print_char_cursor#128 print_sdword::dw#4 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90 [ print_line_cursor#1 print_char_cursor#128 print_sdword::dw#4 ] ) always clobbers reg byte a Statement [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 [ print_char_cursor#20 print_sdword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90 [ print_line_cursor#1 print_char_cursor#20 print_sdword::dw#0 ] ) always clobbers reg byte a Statement [100] (dword) print_dword::dw#0 ← ((dword)) (signed dword) print_sdword::dw#5 [ print_char_cursor#134 print_dword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#134 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#134 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90 [ print_line_cursor#1 print_char_cursor#134 print_dword::dw#0 ] ) always clobbers reg byte a -Statement [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [ print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268 [ print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] ) always clobbers reg byte a -Statement [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 [ print_char_cursor#20 print_word::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264 [ mul16u_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268 [ print_char_cursor#20 print_word::w#2 ] ) always clobbers reg byte a -Statement [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#132 print_byte::b#0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105 [ print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107 [ print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] ) always clobbers reg byte a -Statement [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 [ print_char_cursor#20 print_byte::b#1 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105 [ print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107 [ mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107 [ print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] ) always clobbers reg byte a -Statement [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 print_char_cursor#136 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:111 [ print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:113 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:113 [ print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] ) always clobbers reg byte a +Statement [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [ print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264 [ print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] ) always clobbers reg byte a +Statement [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 [ print_char_cursor#20 print_word::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260 [ mul16u_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264 [ print_char_cursor#20 print_word::w#2 ] ) always clobbers reg byte a +Statement [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#132 print_byte::b#0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105 [ print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107 [ print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] ) always clobbers reg byte a +Statement [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 [ print_char_cursor#20 print_byte::b#1 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105 [ print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107 [ mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107 [ print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] ) always clobbers reg byte a +Statement [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 print_char_cursor#136 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:111 [ print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:113 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:113 [ print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 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:23 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#20 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:111 [ print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:113 [ print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:113 [ print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] ) always clobbers reg byte a -Statement [124] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4 [ print_char_cursor#84 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_char:97 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_char:97 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_char:97 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:111::print_char:118 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:111::print_char:118 [ print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:111::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:111::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:113::print_char:118 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:113::print_char:118 [ print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:113::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:113::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:111::print_char:121 [ print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:111::print_char:121 [ print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:111::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:111::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:113::print_char:121 [ print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:113::print_char:121 [ print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:113::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:113::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_char:130 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_char:130 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#84 ] ) always clobbers reg byte y +Statement [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#20 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:111 [ print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:113 [ print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:113 [ print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] ) always clobbers reg byte a +Statement [124] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4 [ print_char_cursor#84 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_char:97 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_char:97 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_char:97 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:111::print_char:118 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:111::print_char:118 [ print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:111::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:111::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:113::print_char:118 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:113::print_char:118 [ print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:113::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:113::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:111::print_char:121 [ print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:111::print_char:121 [ print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:111::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:111::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:113::print_char:121 [ print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:113::print_char:121 [ print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:113::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:113::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_char:130 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_char:130 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#84 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:23 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Statement [128] if((signed word) print_sword::w#3>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_char_cursor#128 print_sword::w#3 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_sword::w#3 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_sword::w#3 ] ) always clobbers reg byte a Statement [131] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#20 print_sword::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_sword::w#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_sword::w#0 ] ) always clobbers reg byte a @@ -7311,107 +7259,103 @@ Statement [137] (word~) mulf16u::b#4 ← (word)(signed word) mulf16s::b#0 [ mulf Statement [139] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ) always clobbers reg byte a Statement [140] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a Statement [141] if((signed word) mulf16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@1 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a -Statement [142] (word~) mulf16s::$5 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a -Statement [143] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$6 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$6 ] ) always clobbers reg byte a -Statement [144] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ) always clobbers reg byte a -Statement [145] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ) always clobbers reg byte a -Statement [147] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a -Statement [148] (word~) mulf16s::$11 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a -Statement [149] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 mulf16s::$12 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 mulf16s::$12 ] ) always clobbers reg byte a -Statement [150] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#5 mulf16s::$17 ] ) always clobbers reg byte a -Statement [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#2 ] ) always clobbers reg byte a -Statement [153] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#0 ] ) always clobbers reg byte a -Statement [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 [ mulf16u::b#2 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::b#2 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::b#2 ] ) always clobbers reg byte a +Statement [142] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$6 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$6 ] ) always clobbers reg byte a +Statement [143] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ) always clobbers reg byte a +Statement [144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ) always clobbers reg byte a +Statement [146] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a +Statement [147] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 mulf16s::$12 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 mulf16s::$12 ] ) always clobbers reg byte a +Statement [148] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#5 mulf16s::$17 ] ) always clobbers reg byte a +Statement [149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#2 ] ) always clobbers reg byte a +Statement [151] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#0 ] ) always clobbers reg byte a +Statement [154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 [ mulf16u::b#2 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::b#2 ] main:2::mul16u_compare:9::mulf16u:217 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::b#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:66 [ mul16u_compare::j#10 mul16u_compare::j#1 ] -Statement [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 [ ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 [ ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] main:2::mul16u_compare:9::mulf16u:217 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a Statement asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:7 [ mul16s_compare::j#10 mul16s_compare::j#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:66 [ mul16u_compare::j#10 mul16u_compare::j#1 ] -Statement [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) [ mulf16u::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#0 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#0 ] ) always clobbers reg byte a -Statement [161] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16u::b#3 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::b#3 ] ) always clobbers reg byte a -Statement [162] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16s::b#0 mul16u::b#3 mul16u::a#8 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::b#3 mul16u::a#8 ] ) always clobbers reg byte a -Statement [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ) always clobbers reg byte a -Statement [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [166] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [167] (word~) mul16s::$5 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [168] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$6 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a -Statement [169] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [170] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ) always clobbers reg byte a -Statement [172] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a -Statement [173] (word~) mul16s::$11 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a -Statement [174] (word~) mul16s::$12 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 mul16s::$12 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 mul16s::$12 ] ) always clobbers reg byte a -Statement [175] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 [ mul16s::m#5 mul16s::$17 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a -Statement [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#2 ] ) always clobbers reg byte a -Statement [178] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#0 ] ) always clobbers reg byte a -Statement [181] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#6 mul16u::mb#0 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a -Statement [183] 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:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [185] (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:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [191] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [192] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [194] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ) always clobbers reg byte a -Statement [196] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 [ muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ) always clobbers reg byte a -Statement [200] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ) always clobbers reg byte a -Statement [201] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a -Statement [202] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a -Statement [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ) always clobbers reg byte a -Statement [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ) always clobbers reg byte a -Statement [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ) always clobbers reg byte a -Statement [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a -Statement [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ) always clobbers reg byte a -Statement [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ) always clobbers reg byte a -Statement [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ) always clobbers reg byte a -Statement [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ) always clobbers reg byte a +Statement [157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) [ mulf16u::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#0 ] main:2::mul16u_compare:9::mulf16u:217 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#0 ] ) always clobbers reg byte a +Statement [159] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16u::b#3 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::b#3 ] ) always clobbers reg byte a +Statement [160] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16s::b#0 mul16u::b#3 mul16u::a#8 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::b#3 mul16u::a#8 ] ) always clobbers reg byte a +Statement [162] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ) always clobbers reg byte a +Statement [163] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a +Statement [164] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a +Statement [165] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$6 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a +Statement [166] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a +Statement [167] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ) always clobbers reg byte a +Statement [169] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a +Statement [170] (word~) mul16s::$12 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 mul16s::$12 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 mul16s::$12 ] ) always clobbers reg byte a +Statement [171] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 [ mul16s::m#5 mul16s::$17 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a +Statement [172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#2 ] ) always clobbers reg byte a +Statement [174] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#0 ] ) always clobbers reg byte a +Statement [177] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:161 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#6 mul16u::mb#0 ] main:2::mul16u_compare:9::mul16u:212 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a +Statement [179] 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:2::mul16s_compare:11::mul16s:26::mul16u:161 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::mul16u_compare:9::mul16u:212 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a +Statement [181] (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:2::mul16s_compare:11::mul16s:26::mul16u:161 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::mul16u_compare:9::mul16u:212 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a +Statement [183] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:161 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::mul16u_compare:9::mul16u:212 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [187] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a +Statement [188] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a +Statement [190] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ) always clobbers reg byte a +Statement [192] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 [ muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ) always clobbers reg byte a +Statement [196] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ) always clobbers reg byte a +Statement [197] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a +Statement [198] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a +Statement [203] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ) always clobbers reg byte a +Statement [204] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ) always clobbers reg byte a +Statement [205] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ) always clobbers reg byte a +Statement [206] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a +Statement [208] (dword) muls16u::return#2 ← (dword) muls16u::return#0 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ) always clobbers reg byte a +Statement [209] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [210] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [211] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [213] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ) always clobbers reg byte a +Statement [214] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [215] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [216] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [218] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ) always clobbers reg byte a +Statement [219] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [220] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [223] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:67 [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] -Statement [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ) always clobbers reg byte a -Statement [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ) always clobbers reg byte a -Statement [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 [ print_char_cursor#128 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ) always clobbers reg byte a -Statement [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 [ print_char_cursor#128 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ) always clobbers reg byte a -Statement [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 [ print_char_cursor#128 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [241] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ) always clobbers reg byte a -Statement [244] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#192 ] ( main:2::mul16u_compare:9 [ print_line_cursor#1 print_char_cursor#192 ] ) always clobbers reg byte a -Statement [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 [ print_char_cursor#128 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#128 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 [ print_char_cursor#128 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#128 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [ print_char_cursor#128 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#128 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 [ print_char_cursor#128 print_dword::dw#2 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#128 print_dword::dw#2 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 [ print_char_cursor#128 print_dword::dw#3 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#128 print_dword::dw#3 ] ) always clobbers reg byte a -Statement [272] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 [ muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a -Statement [274] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ) always clobbers reg byte a -Statement [276] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 [ muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ) always clobbers reg byte a -Statement [282] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a +Statement [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ) always clobbers reg byte a +Statement [228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ) always clobbers reg byte a +Statement [229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 [ print_char_cursor#128 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ) always clobbers reg byte a +Statement [230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 [ print_char_cursor#128 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ) always clobbers reg byte a +Statement [231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 [ print_char_cursor#128 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [237] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ) always clobbers reg byte a +Statement [240] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#192 ] ( main:2::mul16u_compare:9 [ print_line_cursor#1 print_char_cursor#192 ] ) always clobbers reg byte a +Statement [247] (word) print_word::w#3 ← (word) mul16u_error::a#0 [ print_char_cursor#128 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [251] (word) print_word::w#4 ← (word) mul16u_error::b#0 [ print_char_cursor#128 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [255] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [ print_char_cursor#128 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [259] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 [ print_char_cursor#128 print_dword::dw#2 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_dword::dw#2 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [263] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 [ print_char_cursor#128 print_dword::dw#3 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_dword::dw#3 ] ) always clobbers reg byte a +Statement [268] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 [ muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9::muls16u:207 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a +Statement [270] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ( main:2::mul16u_compare:9::muls16u:207 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ) always clobbers reg byte a +Statement [272] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 [ muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ( main:2::mul16u_compare:9::muls16u:207 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ) always clobbers reg byte a +Statement [278] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:74 [ mulf_init::c#2 mulf_init::c#1 ] -Statement [287] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a -Statement [288] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [283] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a +Statement [284] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:74 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [289] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a -Statement [290] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [292] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [294] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [296] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [285] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a +Statement [286] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [288] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [290] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [292] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] -Statement [297] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [299] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [303] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a -Statement [304] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [305] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [310] *((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 [312] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [293] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [295] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a +Statement [300] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [301] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [306] *((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 [308] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a Statement [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [13] (byte*~) print_char_cursor#176 ← (byte*) print_line_cursor#1 [ print_char_cursor#176 print_line_cursor#1 ] ( main:2::mul16s_compare:11 [ print_char_cursor#176 print_line_cursor#1 ] ) always clobbers reg byte a Statement [17] (signed word) mul16s_compare::a#1 ← (signed word) mul16s_compare::a#2 + (word/signed word/dword/signed dword) 3371 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ) always clobbers reg byte a @@ -7438,10 +7382,10 @@ Statement [44] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compa Statement [45] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ) always clobbers reg byte a Statement [51] if((byte) mul16s_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16s_compare::@1 [ print_line_cursor#1 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::i#1 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::i#1 ] ) always clobbers reg byte a Statement [54] (byte*~) print_char_cursor#185 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#185 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#185 ] ) always clobbers reg byte a -Statement [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#129 ] ( main:2::mul16s_compare:11::print_ln:53 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::print_ln:57 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::mul16s_error:46::print_ln:92 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:243 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:247 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::mul16u_error:236::print_ln:270 [ print_line_cursor#1 print_char_cursor#129 ] ) always clobbers reg byte a -Statement [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#129) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#129 ] ( main:2::mul16s_compare:11::print_ln:53 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::print_ln:57 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::mul16s_error:46::print_ln:92 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:243 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:247 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::mul16u_error:236::print_ln:270 [ print_line_cursor#1 print_char_cursor#129 ] ) always clobbers reg byte a -Statement [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 [ print_char_cursor#128 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::print_str:55 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:205 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:245 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:250 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:254 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:258 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:262 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:266 [ mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] ) always clobbers reg byte a reg byte y -Statement [68] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#15) [ print_char_cursor#128 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::print_str:55 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:205 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:245 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:250 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:254 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:258 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:262 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:266 [ mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] ) always clobbers reg byte a reg byte y +Statement [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#129 ] ( main:2::mul16s_compare:11::print_ln:53 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::print_ln:57 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::mul16s_error:46::print_ln:92 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:239 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:243 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::mul16u_error:232::print_ln:266 [ print_line_cursor#1 print_char_cursor#129 ] ) always clobbers reg byte a +Statement [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#129) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#129 ] ( main:2::mul16s_compare:11::print_ln:53 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::print_ln:57 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::mul16s_error:46::print_ln:92 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:239 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:243 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::mul16u_error:232::print_ln:266 [ print_line_cursor#1 print_char_cursor#129 ] ) always clobbers reg byte a +Statement [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 [ print_char_cursor#128 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::print_str:55 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:201 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:241 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:246 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:250 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:254 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:258 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:262 [ mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] ) always clobbers reg byte a reg byte y +Statement [68] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#15) [ print_char_cursor#128 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::print_str:55 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:201 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:241 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:246 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:250 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:254 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:258 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:262 [ mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] ) always clobbers reg byte a reg byte y Statement [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:46 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ) always clobbers reg byte a Statement [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:46 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ) always clobbers reg byte a Statement [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ( main:2::mul16s_compare:11::mul16s_error:46 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ) always clobbers reg byte a @@ -7450,13 +7394,13 @@ Statement [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error Statement [95] if((signed dword) print_sdword::dw#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sdword::@1 [ print_char_cursor#128 print_sdword::dw#4 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90 [ print_line_cursor#1 print_char_cursor#128 print_sdword::dw#4 ] ) always clobbers reg byte a Statement [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 [ print_char_cursor#20 print_sdword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90 [ print_line_cursor#1 print_char_cursor#20 print_sdword::dw#0 ] ) always clobbers reg byte a Statement [100] (dword) print_dword::dw#0 ← ((dword)) (signed dword) print_sdword::dw#5 [ print_char_cursor#134 print_dword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#134 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#134 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90 [ print_line_cursor#1 print_char_cursor#134 print_dword::dw#0 ] ) always clobbers reg byte a -Statement [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [ print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268 [ print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] ) always clobbers reg byte a -Statement [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 [ print_char_cursor#20 print_word::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264 [ mul16u_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268 [ print_char_cursor#20 print_word::w#2 ] ) always clobbers reg byte a -Statement [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#132 print_byte::b#0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105 [ print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107 [ print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] ) always clobbers reg byte a -Statement [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 [ print_char_cursor#20 print_byte::b#1 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105 [ print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107 [ mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107 [ print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] ) always clobbers reg byte a -Statement [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 print_char_cursor#136 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:111 [ print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:113 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:113 [ print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] ) always clobbers reg byte a -Statement [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#20 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:111 [ print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:113 [ print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:113 [ print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] ) always clobbers reg byte a -Statement [124] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4 [ print_char_cursor#84 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_char:97 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_char:97 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_char:97 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:111::print_char:118 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:111::print_char:118 [ print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:111::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:111::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:113::print_char:118 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:113::print_char:118 [ print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:113::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:113::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:111::print_char:121 [ print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:111::print_char:121 [ print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:111::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:111::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:113::print_char:121 [ print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:113::print_char:121 [ print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:113::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:113::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_char:130 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_char:130 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#84 ] ) always clobbers reg byte y +Statement [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [ print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264 [ print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] ) always clobbers reg byte a +Statement [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 [ print_char_cursor#20 print_word::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260 [ mul16u_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264 [ print_char_cursor#20 print_word::w#2 ] ) always clobbers reg byte a +Statement [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#132 print_byte::b#0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105 [ print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107 [ print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] ) always clobbers reg byte a +Statement [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 [ print_char_cursor#20 print_byte::b#1 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105 [ print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107 [ mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107 [ print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] ) always clobbers reg byte a +Statement [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 print_char_cursor#136 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:111 [ print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:113 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:113 [ print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] ) always clobbers reg byte a +Statement [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#20 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:111 [ print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:113 [ print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:113 [ print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] ) always clobbers reg byte a +Statement [124] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4 [ print_char_cursor#84 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_char:97 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_char:97 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_char:97 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:111::print_char:118 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:111::print_char:118 [ print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:111::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:111::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:113::print_char:118 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:113::print_char:118 [ print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:113::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:113::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:111::print_char:121 [ print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:111::print_char:121 [ print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:111::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:111::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:113::print_char:121 [ print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:113::print_char:121 [ print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:113::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:113::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_char:130 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_char:130 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#84 ] ) always clobbers reg byte y Statement [128] if((signed word) print_sword::w#3>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_char_cursor#128 print_sword::w#3 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_sword::w#3 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_sword::w#3 ] ) always clobbers reg byte a Statement [131] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#20 print_sword::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_sword::w#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_sword::w#0 ] ) always clobbers reg byte a Statement [133] (word~) print_word::w#11 ← (word)(signed word) print_sword::w#4 [ print_word::w#11 print_char_cursor#130 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#11 print_char_cursor#130 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#11 print_char_cursor#130 ] ) always clobbers reg byte a @@ -7465,93 +7409,89 @@ Statement [137] (word~) mulf16u::b#4 ← (word)(signed word) mulf16s::b#0 [ mulf Statement [139] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ) always clobbers reg byte a Statement [140] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a Statement [141] if((signed word) mulf16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@1 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a -Statement [142] (word~) mulf16s::$5 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a -Statement [143] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$6 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$6 ] ) always clobbers reg byte a -Statement [144] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ) always clobbers reg byte a -Statement [145] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ) always clobbers reg byte a -Statement [147] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a -Statement [148] (word~) mulf16s::$11 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a -Statement [149] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 mulf16s::$12 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 mulf16s::$12 ] ) always clobbers reg byte a -Statement [150] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#5 mulf16s::$17 ] ) always clobbers reg byte a -Statement [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#2 ] ) always clobbers reg byte a -Statement [153] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#0 ] ) always clobbers reg byte a -Statement [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 [ mulf16u::b#2 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::b#2 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::b#2 ] ) always clobbers reg byte a -Statement [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 [ ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [142] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$6 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$6 ] ) always clobbers reg byte a +Statement [143] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ) always clobbers reg byte a +Statement [144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ) always clobbers reg byte a +Statement [146] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a +Statement [147] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 mulf16s::$12 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 mulf16s::$12 ] ) always clobbers reg byte a +Statement [148] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#5 mulf16s::$17 ] ) always clobbers reg byte a +Statement [149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#2 ] ) always clobbers reg byte a +Statement [151] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#0 ] ) always clobbers reg byte a +Statement [154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 [ mulf16u::b#2 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::b#2 ] main:2::mul16u_compare:9::mulf16u:217 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::b#2 ] ) always clobbers reg byte a +Statement [155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 [ ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] main:2::mul16u_compare:9::mulf16u:217 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a Statement asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } always clobbers reg byte a reg byte x -Statement [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) [ mulf16u::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#0 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#0 ] ) always clobbers reg byte a -Statement [161] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16u::b#3 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::b#3 ] ) always clobbers reg byte a -Statement [162] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16s::b#0 mul16u::b#3 mul16u::a#8 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::b#3 mul16u::a#8 ] ) always clobbers reg byte a -Statement [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ) always clobbers reg byte a -Statement [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [166] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [167] (word~) mul16s::$5 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [168] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$6 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a -Statement [169] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [170] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ) always clobbers reg byte a -Statement [172] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a -Statement [173] (word~) mul16s::$11 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a -Statement [174] (word~) mul16s::$12 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 mul16s::$12 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 mul16s::$12 ] ) always clobbers reg byte a -Statement [175] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 [ mul16s::m#5 mul16s::$17 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a -Statement [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#2 ] ) always clobbers reg byte a -Statement [178] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#0 ] ) always clobbers reg byte a -Statement [181] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#6 mul16u::mb#0 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a -Statement [183] 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:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [185] (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:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [191] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [192] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [194] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ) always clobbers reg byte a -Statement [196] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 [ muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ) always clobbers reg byte a -Statement [200] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ) always clobbers reg byte a -Statement [201] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a -Statement [202] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a -Statement [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ) always clobbers reg byte a -Statement [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ) always clobbers reg byte a -Statement [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ) always clobbers reg byte a -Statement [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a -Statement [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ) always clobbers reg byte a -Statement [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ) always clobbers reg byte a -Statement [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ) always clobbers reg byte a -Statement [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ) always clobbers reg byte a -Statement [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ) always clobbers reg byte a -Statement [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ) always clobbers reg byte a -Statement [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 [ print_char_cursor#128 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ) always clobbers reg byte a -Statement [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 [ print_char_cursor#128 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ) always clobbers reg byte a -Statement [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 [ print_char_cursor#128 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [241] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ) always clobbers reg byte a -Statement [244] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#192 ] ( main:2::mul16u_compare:9 [ print_line_cursor#1 print_char_cursor#192 ] ) always clobbers reg byte a -Statement [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 [ print_char_cursor#128 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#128 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 [ print_char_cursor#128 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#128 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [ print_char_cursor#128 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#128 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 [ print_char_cursor#128 print_dword::dw#2 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#128 print_dword::dw#2 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 [ print_char_cursor#128 print_dword::dw#3 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#128 print_dword::dw#3 ] ) always clobbers reg byte a -Statement [272] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 [ muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a -Statement [274] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ) always clobbers reg byte a -Statement [276] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 [ muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ) always clobbers reg byte a -Statement [282] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a -Statement [287] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a -Statement [288] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [289] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a -Statement [290] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [292] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [294] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [296] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [297] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [299] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [303] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a -Statement [304] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [305] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [310] *((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 [312] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) [ mulf16u::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#0 ] main:2::mul16u_compare:9::mulf16u:217 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#0 ] ) always clobbers reg byte a +Statement [159] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16u::b#3 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::b#3 ] ) always clobbers reg byte a +Statement [160] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16s::b#0 mul16u::b#3 mul16u::a#8 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::b#3 mul16u::a#8 ] ) always clobbers reg byte a +Statement [162] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ) always clobbers reg byte a +Statement [163] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a +Statement [164] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a +Statement [165] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$6 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a +Statement [166] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a +Statement [167] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ) always clobbers reg byte a +Statement [169] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a +Statement [170] (word~) mul16s::$12 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 mul16s::$12 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 mul16s::$12 ] ) always clobbers reg byte a +Statement [171] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 [ mul16s::m#5 mul16s::$17 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a +Statement [172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#2 ] ) always clobbers reg byte a +Statement [174] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#0 ] ) always clobbers reg byte a +Statement [177] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:161 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#6 mul16u::mb#0 ] main:2::mul16u_compare:9::mul16u:212 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a +Statement [179] 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:2::mul16s_compare:11::mul16s:26::mul16u:161 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::mul16u_compare:9::mul16u:212 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a +Statement [181] (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:2::mul16s_compare:11::mul16s:26::mul16u:161 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::mul16u_compare:9::mul16u:212 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a +Statement [183] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:161 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::mul16u_compare:9::mul16u:212 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [187] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a +Statement [188] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a +Statement [190] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ) always clobbers reg byte a +Statement [192] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 [ muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ) always clobbers reg byte a +Statement [196] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ) always clobbers reg byte a +Statement [197] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a +Statement [198] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a +Statement [203] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ) always clobbers reg byte a +Statement [204] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ) always clobbers reg byte a +Statement [205] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ) always clobbers reg byte a +Statement [206] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a +Statement [208] (dword) muls16u::return#2 ← (dword) muls16u::return#0 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ) always clobbers reg byte a +Statement [209] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [210] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [211] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [213] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ) always clobbers reg byte a +Statement [214] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [215] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [216] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [218] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ) always clobbers reg byte a +Statement [219] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [220] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [223] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ) always clobbers reg byte a +Statement [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ) always clobbers reg byte a +Statement [228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ) always clobbers reg byte a +Statement [229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 [ print_char_cursor#128 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ) always clobbers reg byte a +Statement [230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 [ print_char_cursor#128 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ) always clobbers reg byte a +Statement [231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 [ print_char_cursor#128 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [237] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ) always clobbers reg byte a +Statement [240] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#192 ] ( main:2::mul16u_compare:9 [ print_line_cursor#1 print_char_cursor#192 ] ) always clobbers reg byte a +Statement [247] (word) print_word::w#3 ← (word) mul16u_error::a#0 [ print_char_cursor#128 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [251] (word) print_word::w#4 ← (word) mul16u_error::b#0 [ print_char_cursor#128 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [255] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [ print_char_cursor#128 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [259] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 [ print_char_cursor#128 print_dword::dw#2 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_dword::dw#2 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [263] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 [ print_char_cursor#128 print_dword::dw#3 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_dword::dw#3 ] ) always clobbers reg byte a +Statement [268] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 [ muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9::muls16u:207 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a +Statement [270] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ( main:2::mul16u_compare:9::muls16u:207 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ) always clobbers reg byte a +Statement [272] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 [ muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ( main:2::mul16u_compare:9::muls16u:207 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ) always clobbers reg byte a +Statement [278] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a +Statement [283] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a +Statement [284] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [285] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a +Statement [286] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [288] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [290] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [292] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [293] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [295] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a +Statement [300] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [301] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [306] *((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 [308] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] : zp ZP_BYTE:2 , Potential registers zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] : zp ZP_WORD:3 , Potential registers zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] : zp ZP_WORD:5 , @@ -7614,52 +7554,48 @@ Potential registers zp ZP_DWORD:138 [ mul16s_error::mf#0 ] : zp ZP_DWORD:138 , Potential registers zp ZP_BYTE:142 [ print_byte::$0 ] : zp ZP_BYTE:142 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:143 [ print_byte::$2 ] : zp ZP_BYTE:143 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_DWORD:144 [ mulf16u::return#2 ] : zp ZP_DWORD:144 , -Potential registers zp ZP_WORD:148 [ mulf16s::$5 ] : zp ZP_WORD:148 , -Potential registers zp ZP_WORD:150 [ mulf16s::$6 ] : zp ZP_WORD:150 , -Potential registers zp ZP_WORD:152 [ mulf16s::$16 ] : zp ZP_WORD:152 , -Potential registers zp ZP_WORD:154 [ mulf16s::$11 ] : zp ZP_WORD:154 , -Potential registers zp ZP_WORD:156 [ mulf16s::$12 ] : zp ZP_WORD:156 , -Potential registers zp ZP_WORD:158 [ mulf16s::$17 ] : zp ZP_WORD:158 , -Potential registers zp ZP_DWORD:160 [ mulf16s::return#0 ] : zp ZP_DWORD:160 , -Potential registers zp ZP_DWORD:164 [ mulf16u::return#0 ] : zp ZP_DWORD:164 , -Potential registers zp ZP_DWORD:168 [ mul16u::return#2 ] : zp ZP_DWORD:168 , -Potential registers zp ZP_WORD:172 [ mul16s::$5 ] : zp ZP_WORD:172 , -Potential registers zp ZP_WORD:174 [ mul16s::$6 ] : zp ZP_WORD:174 , -Potential registers zp ZP_WORD:176 [ mul16s::$16 ] : zp ZP_WORD:176 , -Potential registers zp ZP_WORD:178 [ mul16s::$11 ] : zp ZP_WORD:178 , -Potential registers zp ZP_WORD:180 [ mul16s::$12 ] : zp ZP_WORD:180 , -Potential registers zp ZP_WORD:182 [ mul16s::$17 ] : zp ZP_WORD:182 , -Potential registers zp ZP_DWORD:184 [ mul16s::return#0 ] : zp ZP_DWORD:184 , -Potential registers zp ZP_BYTE:188 [ mul16u::$1 ] : zp ZP_BYTE:188 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:189 [ muls16u::a#0 ] : zp ZP_WORD:189 , -Potential registers zp ZP_WORD:191 [ muls16u::b#0 ] : zp ZP_WORD:191 , -Potential registers zp ZP_DWORD:193 [ muls16u::return#2 ] : zp ZP_DWORD:193 , -Potential registers zp ZP_DWORD:197 [ mul16u_compare::ms#0 ] : zp ZP_DWORD:197 , -Potential registers zp ZP_DWORD:201 [ mul16u::return#3 ] : zp ZP_DWORD:201 , -Potential registers zp ZP_DWORD:205 [ mul16u_compare::mn#0 ] : zp ZP_DWORD:205 , -Potential registers zp ZP_DWORD:209 [ mulf16u::return#3 ] : zp ZP_DWORD:209 , -Potential registers zp ZP_DWORD:213 [ mul16u_compare::mf#0 ] : zp ZP_DWORD:213 , -Potential registers zp ZP_WORD:217 [ mul16u_error::a#0 ] : zp ZP_WORD:217 , -Potential registers zp ZP_WORD:219 [ mul16u_error::b#0 ] : zp ZP_WORD:219 , -Potential registers zp ZP_DWORD:221 [ mul16u_error::ms#0 ] : zp ZP_DWORD:221 , -Potential registers zp ZP_DWORD:225 [ mul16u_error::mn#0 ] : zp ZP_DWORD:225 , -Potential registers zp ZP_DWORD:229 [ mul16u_error::mf#0 ] : zp ZP_DWORD:229 , -Potential registers zp ZP_BYTE:233 [ mulf_init::$2 ] : zp ZP_BYTE:233 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:234 [ mulf_init::$5 ] : zp ZP_BYTE:234 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:235 [ mulf_init::$6 ] : zp ZP_BYTE:235 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:148 [ mulf16s::$6 ] : zp ZP_WORD:148 , +Potential registers zp ZP_WORD:150 [ mulf16s::$16 ] : zp ZP_WORD:150 , +Potential registers zp ZP_WORD:152 [ mulf16s::$12 ] : zp ZP_WORD:152 , +Potential registers zp ZP_WORD:154 [ mulf16s::$17 ] : zp ZP_WORD:154 , +Potential registers zp ZP_DWORD:156 [ mulf16s::return#0 ] : zp ZP_DWORD:156 , +Potential registers zp ZP_DWORD:160 [ mulf16u::return#0 ] : zp ZP_DWORD:160 , +Potential registers zp ZP_DWORD:164 [ mul16u::return#2 ] : zp ZP_DWORD:164 , +Potential registers zp ZP_WORD:168 [ mul16s::$6 ] : zp ZP_WORD:168 , +Potential registers zp ZP_WORD:170 [ mul16s::$16 ] : zp ZP_WORD:170 , +Potential registers zp ZP_WORD:172 [ mul16s::$12 ] : zp ZP_WORD:172 , +Potential registers zp ZP_WORD:174 [ mul16s::$17 ] : zp ZP_WORD:174 , +Potential registers zp ZP_DWORD:176 [ mul16s::return#0 ] : zp ZP_DWORD:176 , +Potential registers zp ZP_BYTE:180 [ mul16u::$1 ] : zp ZP_BYTE:180 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:181 [ muls16u::a#0 ] : zp ZP_WORD:181 , +Potential registers zp ZP_WORD:183 [ muls16u::b#0 ] : zp ZP_WORD:183 , +Potential registers zp ZP_DWORD:185 [ muls16u::return#2 ] : zp ZP_DWORD:185 , +Potential registers zp ZP_DWORD:189 [ mul16u_compare::ms#0 ] : zp ZP_DWORD:189 , +Potential registers zp ZP_DWORD:193 [ mul16u::return#3 ] : zp ZP_DWORD:193 , +Potential registers zp ZP_DWORD:197 [ mul16u_compare::mn#0 ] : zp ZP_DWORD:197 , +Potential registers zp ZP_DWORD:201 [ mulf16u::return#3 ] : zp ZP_DWORD:201 , +Potential registers zp ZP_DWORD:205 [ mul16u_compare::mf#0 ] : zp ZP_DWORD:205 , +Potential registers zp ZP_WORD:209 [ mul16u_error::a#0 ] : zp ZP_WORD:209 , +Potential registers zp ZP_WORD:211 [ mul16u_error::b#0 ] : zp ZP_WORD:211 , +Potential registers zp ZP_DWORD:213 [ mul16u_error::ms#0 ] : zp ZP_DWORD:213 , +Potential registers zp ZP_DWORD:217 [ mul16u_error::mn#0 ] : zp ZP_DWORD:217 , +Potential registers zp ZP_DWORD:221 [ mul16u_error::mf#0 ] : zp ZP_DWORD:221 , +Potential registers zp ZP_BYTE:225 [ mulf_init::$2 ] : zp ZP_BYTE:225 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:226 [ mulf_init::$5 ] : zp ZP_BYTE:226 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:227 [ mulf_init::$6 ] : zp ZP_BYTE:227 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES Uplift Scope [muls16s] 6,707: zp ZP_DWORD:55 [ muls16s::m#5 muls16s::return#0 muls16s::m#3 muls16s::m#1 muls16s::m#2 ] 2,502.5: zp ZP_WORD:53 [ muls16s::j#2 muls16s::j#1 ] 2,502.5: zp ZP_WORD:59 [ muls16s::i#2 muls16s::i#1 ] 202: zp ZP_DWORD:94 [ muls16s::return#2 ] 191.18: zp ZP_WORD:92 [ muls16s::b#0 ] 175.58: zp ZP_WORD:90 [ muls16s::a#0 ] -Uplift Scope [mul16u] 3,446.71: zp ZP_DWORD:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 2,435.29: zp ZP_DWORD:49 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 2,002: zp ZP_BYTE:188 [ mul16u::$1 ] 1,826.17: zp ZP_WORD:43 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] 309: zp ZP_WORD:41 [ mul16u::b#2 mul16u::b#3 mul16u::b#1 ] 202: zp ZP_DWORD:201 [ mul16u::return#3 ] 4: zp ZP_DWORD:168 [ mul16u::return#2 ] -Uplift Scope [muls16u] 3,370.33: zp ZP_DWORD:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] 2,502.5: zp ZP_WORD:68 [ muls16u::i#2 muls16u::i#1 ] 202: zp ZP_DWORD:193 [ muls16u::return#2 ] 183.67: zp ZP_WORD:191 [ muls16u::b#0 ] 157.71: zp ZP_WORD:189 [ muls16u::a#0 ] -Uplift Scope [mul16u_compare] 241.86: zp ZP_WORD:62 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] 235.67: zp ZP_BYTE:67 [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] 159.58: zp ZP_BYTE:66 [ mul16u_compare::j#10 mul16u_compare::j#1 ] 135.36: zp ZP_WORD:64 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] 17.26: zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] 15.69: zp ZP_DWORD:213 [ mul16u_compare::mf#0 ] 14.52: zp ZP_DWORD:197 [ mul16u_compare::ms#0 ] 12: zp ZP_DWORD:205 [ mul16u_compare::mn#0 ] +Uplift Scope [mul16u] 3,446.71: zp ZP_DWORD:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 2,435.29: zp ZP_DWORD:49 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 2,002: zp ZP_BYTE:180 [ mul16u::$1 ] 1,826.17: zp ZP_WORD:43 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] 309: zp ZP_WORD:41 [ mul16u::b#2 mul16u::b#3 mul16u::b#1 ] 202: zp ZP_DWORD:193 [ mul16u::return#3 ] 4: zp ZP_DWORD:164 [ mul16u::return#2 ] +Uplift Scope [muls16u] 3,370.33: zp ZP_DWORD:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] 2,502.5: zp ZP_WORD:68 [ muls16u::i#2 muls16u::i#1 ] 202: zp ZP_DWORD:185 [ muls16u::return#2 ] 183.67: zp ZP_WORD:183 [ muls16u::b#0 ] 157.71: zp ZP_WORD:181 [ muls16u::a#0 ] +Uplift Scope [mul16u_compare] 241.86: zp ZP_WORD:62 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] 235.67: zp ZP_BYTE:67 [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] 159.58: zp ZP_BYTE:66 [ mul16u_compare::j#10 mul16u_compare::j#1 ] 135.36: zp ZP_WORD:64 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] 17.26: zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] 15.69: zp ZP_DWORD:205 [ mul16u_compare::mf#0 ] 14.52: zp ZP_DWORD:189 [ mul16u_compare::ms#0 ] 12: zp ZP_DWORD:197 [ mul16u_compare::mn#0 ] Uplift Scope [mul16s_compare] 241.86: zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] 235.67: zp ZP_BYTE:8 [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] 159.58: zp ZP_BYTE:7 [ mul16s_compare::j#10 mul16s_compare::j#1 ] 135.36: zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] 17.26: zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] 15.69: zp ZP_DWORD:122 [ mul16s_compare::mf#0 ] 14.52: zp ZP_DWORD:98 [ mul16s_compare::ms#0 ] 12: zp ZP_DWORD:110 [ mul16s_compare::mn#0 ] -Uplift Scope [mulf16u] 258.5: zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#4 ] 208: zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#4 ] 202: zp ZP_DWORD:209 [ mulf16u::return#3 ] 26.25: zp ZP_DWORD:164 [ mulf16u::return#0 ] 4: zp ZP_DWORD:144 [ mulf16u::return#2 ] -Uplift Scope [mul16s] 202: zp ZP_DWORD:106 [ mul16s::return#2 ] 34.33: zp ZP_DWORD:184 [ mul16s::return#0 ] 20: zp ZP_WORD:172 [ mul16s::$5 ] 20: zp ZP_WORD:178 [ mul16s::$11 ] 18.4: zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] 8.58: zp ZP_WORD:104 [ mul16s::b#0 ] 6.44: zp ZP_WORD:102 [ mul16s::a#0 ] 4: zp ZP_WORD:174 [ mul16s::$6 ] 4: zp ZP_WORD:176 [ mul16s::$16 ] 4: zp ZP_WORD:180 [ mul16s::$12 ] 4: zp ZP_WORD:182 [ mul16s::$17 ] -Uplift Scope [mulf16s] 202: zp ZP_DWORD:118 [ mulf16s::return#2 ] 34.33: zp ZP_DWORD:160 [ mulf16s::return#0 ] 20: zp ZP_WORD:148 [ mulf16s::$5 ] 20: zp ZP_WORD:154 [ mulf16s::$11 ] 18.4: zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] 8.58: zp ZP_WORD:116 [ mulf16s::b#0 ] 6.44: zp ZP_WORD:114 [ mulf16s::a#0 ] 4: zp ZP_WORD:150 [ mulf16s::$6 ] 4: zp ZP_WORD:152 [ mulf16s::$16 ] 4: zp ZP_WORD:156 [ mulf16s::$12 ] 4: zp ZP_WORD:158 [ mulf16s::$17 ] +Uplift Scope [mulf16u] 258.5: zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#4 ] 208: zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#4 ] 202: zp ZP_DWORD:201 [ mulf16u::return#3 ] 26.25: zp ZP_DWORD:160 [ mulf16u::return#0 ] 4: zp ZP_DWORD:144 [ mulf16u::return#2 ] Uplift Scope [print_str] 305.5: zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] +Uplift Scope [mul16s] 202: zp ZP_DWORD:106 [ mul16s::return#2 ] 34.33: zp ZP_DWORD:176 [ mul16s::return#0 ] 18.5: zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] 9.36: zp ZP_WORD:104 [ mul16s::b#0 ] 7.36: zp ZP_WORD:102 [ mul16s::a#0 ] 4: zp ZP_WORD:168 [ mul16s::$6 ] 4: zp ZP_WORD:170 [ mul16s::$16 ] 4: zp ZP_WORD:172 [ mul16s::$12 ] 4: zp ZP_WORD:174 [ mul16s::$17 ] +Uplift Scope [mulf16s] 202: zp ZP_DWORD:118 [ mulf16s::return#2 ] 34.33: zp ZP_DWORD:156 [ mulf16s::return#0 ] 18.5: zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] 9.36: zp ZP_WORD:116 [ mulf16s::b#0 ] 7.36: zp ZP_WORD:114 [ mulf16s::a#0 ] 4: zp ZP_WORD:148 [ mulf16s::$6 ] 4: zp ZP_WORD:150 [ mulf16s::$16 ] 4: zp ZP_WORD:152 [ mulf16s::$12 ] 4: zp ZP_WORD:154 [ mulf16s::$17 ] Uplift Scope [] 241.74: zp ZP_WORD:25 [ print_char_cursor#84 print_char_cursor#136 print_char_cursor#132 print_char_cursor#133 print_char_cursor#134 print_char_cursor#148 print_char_cursor#129 print_char_cursor#143 print_char_cursor#176 print_char_cursor#128 print_char_cursor#20 print_char_cursor#185 print_char_cursor#139 print_char_cursor#192 print_char_cursor#1 print_char_cursor#130 ] 34.6: zp ZP_WORD:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] -Uplift Scope [mulf_init] 45.1: zp ZP_WORD:80 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 24.36: zp ZP_BYTE:74 [ mulf_init::c#2 mulf_init::c#1 ] 24.14: zp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp ZP_BYTE:233 [ mulf_init::$2 ] 22: zp ZP_BYTE:234 [ mulf_init::$5 ] 22: zp ZP_BYTE:235 [ mulf_init::$6 ] 20.62: zp ZP_WORD:83 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 19.04: zp ZP_WORD:75 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 16.5: zp ZP_BYTE:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 14.14: zp ZP_WORD:85 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 12.05: zp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] 8.5: zp ZP_WORD:77 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplift Scope [mulf_init] 45.1: zp ZP_WORD:80 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 24.36: zp ZP_BYTE:74 [ mulf_init::c#2 mulf_init::c#1 ] 24.14: zp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp ZP_BYTE:225 [ mulf_init::$2 ] 22: zp ZP_BYTE:226 [ mulf_init::$5 ] 22: zp ZP_BYTE:227 [ mulf_init::$6 ] 20.62: zp ZP_WORD:83 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 19.04: zp ZP_WORD:75 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 16.5: zp ZP_BYTE:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 14.14: zp ZP_WORD:85 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 12.05: zp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] 8.5: zp ZP_WORD:77 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Uplift Scope [print_cls] 33: zp ZP_WORD:88 [ print_cls::sc#2 print_cls::sc#1 ] Uplift Scope [print_sdword] 25: zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 ] Uplift Scope [print_word] 24.67: zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 ] @@ -7667,44 +7603,44 @@ Uplift Scope [print_dword] 20: zp ZP_DWORD:17 [ print_dword::dw#4 print_dword::d Uplift Scope [print_sword] 18.5: zp ZP_WORD:27 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] Uplift Scope [print_byte] 10: zp ZP_BYTE:23 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:142 [ print_byte::$0 ] 4: zp ZP_BYTE:143 [ print_byte::$2 ] Uplift Scope [print_char] 14: zp ZP_BYTE:24 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Uplift Scope [mul16u_error] 0.57: zp ZP_WORD:217 [ mul16u_error::a#0 ] 0.4: zp ZP_WORD:219 [ mul16u_error::b#0 ] 0.31: zp ZP_DWORD:221 [ mul16u_error::ms#0 ] 0.25: zp ZP_DWORD:225 [ mul16u_error::mn#0 ] 0.21: zp ZP_DWORD:229 [ mul16u_error::mf#0 ] +Uplift Scope [mul16u_error] 0.57: zp ZP_WORD:209 [ mul16u_error::a#0 ] 0.4: zp ZP_WORD:211 [ mul16u_error::b#0 ] 0.31: zp ZP_DWORD:213 [ mul16u_error::ms#0 ] 0.25: zp ZP_DWORD:217 [ mul16u_error::mn#0 ] 0.21: zp ZP_DWORD:221 [ mul16u_error::mf#0 ] Uplift Scope [mul16s_error] 0.57: zp ZP_WORD:126 [ mul16s_error::a#0 ] 0.4: zp ZP_WORD:128 [ mul16s_error::b#0 ] 0.31: zp ZP_DWORD:130 [ mul16s_error::ms#0 ] 0.25: zp ZP_DWORD:134 [ mul16s_error::mn#0 ] 0.21: zp ZP_DWORD:138 [ mul16s_error::mf#0 ] Uplift Scope [print_ln] Uplift Scope [main] -Uplifting [muls16s] best 558943 combination zp ZP_DWORD:55 [ muls16s::m#5 muls16s::return#0 muls16s::m#3 muls16s::m#1 muls16s::m#2 ] zp ZP_WORD:53 [ muls16s::j#2 muls16s::j#1 ] zp ZP_WORD:59 [ muls16s::i#2 muls16s::i#1 ] zp ZP_DWORD:94 [ muls16s::return#2 ] zp ZP_WORD:92 [ muls16s::b#0 ] zp ZP_WORD:90 [ muls16s::a#0 ] -Uplifting [mul16u] best 552943 combination zp ZP_DWORD:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:49 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:43 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:41 [ mul16u::b#2 mul16u::b#3 mul16u::b#1 ] zp ZP_DWORD:201 [ mul16u::return#3 ] zp ZP_DWORD:168 [ mul16u::return#2 ] -Uplifting [muls16u] best 552943 combination zp ZP_DWORD:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] zp ZP_WORD:68 [ muls16u::i#2 muls16u::i#1 ] zp ZP_DWORD:193 [ muls16u::return#2 ] zp ZP_WORD:191 [ muls16u::b#0 ] zp ZP_WORD:189 [ muls16u::a#0 ] -Uplifting [mul16u_compare] best 550843 combination zp ZP_WORD:62 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] reg byte x [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] reg byte y [ mul16u_compare::j#10 mul16u_compare::j#1 ] zp ZP_WORD:64 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] zp ZP_DWORD:213 [ mul16u_compare::mf#0 ] zp ZP_DWORD:197 [ mul16u_compare::ms#0 ] zp ZP_DWORD:205 [ mul16u_compare::mn#0 ] -Uplifting [mul16s_compare] best 548743 combination zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ] zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] zp ZP_DWORD:122 [ mul16s_compare::mf#0 ] zp ZP_DWORD:98 [ mul16s_compare::ms#0 ] zp ZP_DWORD:110 [ mul16s_compare::mn#0 ] -Uplifting [mulf16u] best 548743 combination zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#4 ] zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#4 ] zp ZP_DWORD:209 [ mulf16u::return#3 ] zp ZP_DWORD:164 [ mulf16u::return#0 ] zp ZP_DWORD:144 [ mulf16u::return#2 ] -Uplifting [mul16s] best 548743 combination zp ZP_DWORD:106 [ mul16s::return#2 ] zp ZP_DWORD:184 [ mul16s::return#0 ] zp ZP_WORD:172 [ mul16s::$5 ] zp ZP_WORD:178 [ mul16s::$11 ] zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] zp ZP_WORD:104 [ mul16s::b#0 ] zp ZP_WORD:102 [ mul16s::a#0 ] zp ZP_WORD:174 [ mul16s::$6 ] zp ZP_WORD:176 [ mul16s::$16 ] zp ZP_WORD:180 [ mul16s::$12 ] zp ZP_WORD:182 [ mul16s::$17 ] -Uplifting [mulf16s] best 548743 combination zp ZP_DWORD:118 [ mulf16s::return#2 ] zp ZP_DWORD:160 [ mulf16s::return#0 ] zp ZP_WORD:148 [ mulf16s::$5 ] zp ZP_WORD:154 [ mulf16s::$11 ] zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] zp ZP_WORD:116 [ mulf16s::b#0 ] zp ZP_WORD:114 [ mulf16s::a#0 ] zp ZP_WORD:150 [ mulf16s::$6 ] zp ZP_WORD:152 [ mulf16s::$16 ] zp ZP_WORD:156 [ mulf16s::$12 ] zp ZP_WORD:158 [ mulf16s::$17 ] -Uplifting [print_str] best 548743 combination zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] -Uplifting [] best 548743 combination zp ZP_WORD:25 [ print_char_cursor#84 print_char_cursor#136 print_char_cursor#132 print_char_cursor#133 print_char_cursor#134 print_char_cursor#148 print_char_cursor#129 print_char_cursor#143 print_char_cursor#176 print_char_cursor#128 print_char_cursor#20 print_char_cursor#185 print_char_cursor#139 print_char_cursor#192 print_char_cursor#1 print_char_cursor#130 ] zp ZP_WORD:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] -Uplifting [mulf_init] best 548493 combination zp ZP_WORD:80 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$2 ] reg byte a [ mulf_init::$5 ] reg byte a [ mulf_init::$6 ] zp ZP_WORD:83 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:75 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] zp ZP_BYTE:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_WORD:85 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_WORD:77 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplifting [muls16s] best 558895 combination zp ZP_DWORD:55 [ muls16s::m#5 muls16s::return#0 muls16s::m#3 muls16s::m#1 muls16s::m#2 ] zp ZP_WORD:53 [ muls16s::j#2 muls16s::j#1 ] zp ZP_WORD:59 [ muls16s::i#2 muls16s::i#1 ] zp ZP_DWORD:94 [ muls16s::return#2 ] zp ZP_WORD:92 [ muls16s::b#0 ] zp ZP_WORD:90 [ muls16s::a#0 ] +Uplifting [mul16u] best 552895 combination zp ZP_DWORD:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:49 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:43 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:41 [ mul16u::b#2 mul16u::b#3 mul16u::b#1 ] zp ZP_DWORD:193 [ mul16u::return#3 ] zp ZP_DWORD:164 [ mul16u::return#2 ] +Uplifting [muls16u] best 552895 combination zp ZP_DWORD:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] zp ZP_WORD:68 [ muls16u::i#2 muls16u::i#1 ] zp ZP_DWORD:185 [ muls16u::return#2 ] zp ZP_WORD:183 [ muls16u::b#0 ] zp ZP_WORD:181 [ muls16u::a#0 ] +Uplifting [mul16u_compare] best 550795 combination zp ZP_WORD:62 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] reg byte x [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] reg byte y [ mul16u_compare::j#10 mul16u_compare::j#1 ] zp ZP_WORD:64 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] zp ZP_DWORD:205 [ mul16u_compare::mf#0 ] zp ZP_DWORD:189 [ mul16u_compare::ms#0 ] zp ZP_DWORD:197 [ mul16u_compare::mn#0 ] +Uplifting [mul16s_compare] best 548695 combination zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ] zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] zp ZP_DWORD:122 [ mul16s_compare::mf#0 ] zp ZP_DWORD:98 [ mul16s_compare::ms#0 ] zp ZP_DWORD:110 [ mul16s_compare::mn#0 ] +Uplifting [mulf16u] best 548695 combination zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#4 ] zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#4 ] zp ZP_DWORD:201 [ mulf16u::return#3 ] zp ZP_DWORD:160 [ mulf16u::return#0 ] zp ZP_DWORD:144 [ mulf16u::return#2 ] +Uplifting [print_str] best 548695 combination zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] +Uplifting [mul16s] best 548695 combination zp ZP_DWORD:106 [ mul16s::return#2 ] zp ZP_DWORD:176 [ mul16s::return#0 ] zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] zp ZP_WORD:104 [ mul16s::b#0 ] zp ZP_WORD:102 [ mul16s::a#0 ] zp ZP_WORD:168 [ mul16s::$6 ] zp ZP_WORD:170 [ mul16s::$16 ] zp ZP_WORD:172 [ mul16s::$12 ] zp ZP_WORD:174 [ mul16s::$17 ] +Uplifting [mulf16s] best 548695 combination zp ZP_DWORD:118 [ mulf16s::return#2 ] zp ZP_DWORD:156 [ mulf16s::return#0 ] zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] zp ZP_WORD:116 [ mulf16s::b#0 ] zp ZP_WORD:114 [ mulf16s::a#0 ] zp ZP_WORD:148 [ mulf16s::$6 ] zp ZP_WORD:150 [ mulf16s::$16 ] zp ZP_WORD:152 [ mulf16s::$12 ] zp ZP_WORD:154 [ mulf16s::$17 ] +Uplifting [] best 548695 combination zp ZP_WORD:25 [ print_char_cursor#84 print_char_cursor#136 print_char_cursor#132 print_char_cursor#133 print_char_cursor#134 print_char_cursor#148 print_char_cursor#129 print_char_cursor#143 print_char_cursor#176 print_char_cursor#128 print_char_cursor#20 print_char_cursor#185 print_char_cursor#139 print_char_cursor#192 print_char_cursor#1 print_char_cursor#130 ] zp ZP_WORD:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] +Uplifting [mulf_init] best 548445 combination zp ZP_WORD:80 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$2 ] reg byte a [ mulf_init::$5 ] reg byte a [ mulf_init::$6 ] zp ZP_WORD:83 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:75 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] zp ZP_BYTE:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_WORD:85 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_WORD:77 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [print_cls] best 548493 combination zp ZP_WORD:88 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_sdword] best 548493 combination zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 ] -Uplifting [print_word] best 548493 combination zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 ] -Uplifting [print_dword] best 548493 combination zp ZP_DWORD:17 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] -Uplifting [print_sword] best 548493 combination zp ZP_WORD:27 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] -Uplifting [print_byte] best 548481 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [print_char] best 548466 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Uplifting [mul16u_error] best 548466 combination zp ZP_WORD:217 [ mul16u_error::a#0 ] zp ZP_WORD:219 [ mul16u_error::b#0 ] zp ZP_DWORD:221 [ mul16u_error::ms#0 ] zp ZP_DWORD:225 [ mul16u_error::mn#0 ] zp ZP_DWORD:229 [ mul16u_error::mf#0 ] -Uplifting [mul16s_error] best 548466 combination zp ZP_WORD:126 [ mul16s_error::a#0 ] zp ZP_WORD:128 [ mul16s_error::b#0 ] zp ZP_DWORD:130 [ mul16s_error::ms#0 ] zp ZP_DWORD:134 [ mul16s_error::mn#0 ] zp ZP_DWORD:138 [ mul16s_error::mf#0 ] -Uplifting [print_ln] best 548466 combination -Uplifting [main] best 548466 combination +Uplifting [print_cls] best 548445 combination zp ZP_WORD:88 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_sdword] best 548445 combination zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 ] +Uplifting [print_word] best 548445 combination zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 ] +Uplifting [print_dword] best 548445 combination zp ZP_DWORD:17 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] +Uplifting [print_sword] best 548445 combination zp ZP_WORD:27 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] +Uplifting [print_byte] best 548433 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_char] best 548418 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplifting [mul16u_error] best 548418 combination zp ZP_WORD:209 [ mul16u_error::a#0 ] zp ZP_WORD:211 [ mul16u_error::b#0 ] zp ZP_DWORD:213 [ mul16u_error::ms#0 ] zp ZP_DWORD:217 [ mul16u_error::mn#0 ] zp ZP_DWORD:221 [ mul16u_error::mf#0 ] +Uplifting [mul16s_error] best 548418 combination zp ZP_WORD:126 [ mul16s_error::a#0 ] zp ZP_WORD:128 [ mul16s_error::b#0 ] zp ZP_DWORD:130 [ mul16s_error::ms#0 ] zp ZP_DWORD:134 [ mul16s_error::mn#0 ] zp ZP_DWORD:138 [ mul16s_error::mf#0 ] +Uplifting [print_ln] best 548418 combination +Uplifting [main] best 548418 combination Attempting to uplift remaining variables inzp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Uplifting [mulf_init] best 548466 combination zp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] +Uplifting [mulf_init] best 548418 combination zp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] -Uplifting [mul16s_compare] best 548466 combination zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] +Uplifting [mul16s_compare] best 548418 combination zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] -Uplifting [mul16u_compare] best 548466 combination zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] +Uplifting [mul16u_compare] best 548418 combination zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Uplifting [mulf_init] best 548326 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Uplifting [mulf_init] best 548278 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] -Uplifting [mulf_init] best 548326 combination zp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] +Uplifting [mulf_init] best 548278 combination zp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] ] with [ zp ZP_WORD:90 [ muls16s::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 ] ] with [ zp ZP_WORD:102 [ mul16s::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 ] ] with [ zp ZP_WORD:114 [ mulf16s::a#0 ] ] - score: 1 @@ -7716,43 +7652,43 @@ Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ mul16s_com Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 ] ] with [ zp ZP_DWORD:17 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] ] with [ zp ZP_DWORD:130 [ mul16s_error::ms#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 ] ] with [ zp ZP_WORD:27 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] ] with [ zp ZP_WORD:217 [ mul16u_error::a#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] ] with [ zp ZP_WORD:209 [ mul16u_error::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] ] with [ zp ZP_DWORD:144 [ mulf16u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 ] ] with [ zp ZP_DWORD:160 [ mulf16s::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 ] ] with [ zp ZP_DWORD:156 [ mulf16s::return#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#4 ] ] with [ zp ZP_WORD:62 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#4 ] ] with [ zp ZP_WORD:64 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] ] with [ zp ZP_DWORD:168 [ mul16u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 ] ] with [ zp ZP_DWORD:184 [ mul16s::return#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] ] with [ zp ZP_DWORD:201 [ mul16u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] ] with [ zp ZP_DWORD:164 [ mul16u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 ] ] with [ zp ZP_DWORD:176 [ mul16s::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] ] with [ zp ZP_DWORD:193 [ mul16u::return#3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:55 [ muls16s::m#5 muls16s::return#0 muls16s::m#3 muls16s::m#1 muls16s::m#2 ] ] with [ zp ZP_DWORD:94 [ muls16s::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] ] with [ zp ZP_DWORD:193 [ muls16u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] ] with [ zp ZP_DWORD:185 [ muls16u::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:106 [ mul16s::return#2 ] ] with [ zp ZP_DWORD:110 [ mul16s_compare::mn#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:118 [ mulf16s::return#2 ] ] with [ zp ZP_DWORD:122 [ mul16s_compare::mf#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:150 [ mulf16s::$6 ] ] with [ zp ZP_WORD:152 [ mulf16s::$16 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:156 [ mulf16s::$12 ] ] with [ zp ZP_WORD:158 [ mulf16s::$17 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:164 [ mulf16u::return#0 ] ] with [ zp ZP_DWORD:209 [ mulf16u::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:174 [ mul16s::$6 ] ] with [ zp ZP_WORD:176 [ mul16s::$16 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:180 [ mul16s::$12 ] ] with [ zp ZP_WORD:182 [ mul16s::$17 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:197 [ mul16u_compare::ms#0 ] ] with [ zp ZP_DWORD:221 [ mul16u_error::ms#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:205 [ mul16u_compare::mn#0 ] ] with [ zp ZP_DWORD:225 [ mul16u_error::mn#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:213 [ mul16u_compare::mf#0 ] ] with [ zp ZP_DWORD:229 [ mul16u_error::mf#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:148 [ mulf16s::$6 ] ] with [ zp ZP_WORD:150 [ mulf16s::$16 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:152 [ mulf16s::$12 ] ] with [ zp ZP_WORD:154 [ mulf16s::$17 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:160 [ mulf16u::return#0 ] ] with [ zp ZP_DWORD:201 [ mulf16u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:168 [ mul16s::$6 ] ] with [ zp ZP_WORD:170 [ mul16s::$16 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:172 [ mul16s::$12 ] ] with [ zp ZP_WORD:174 [ mul16s::$17 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:189 [ mul16u_compare::ms#0 ] ] with [ zp ZP_DWORD:213 [ mul16u_error::ms#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:197 [ mul16u_compare::mn#0 ] ] with [ zp ZP_DWORD:217 [ mul16u_error::mn#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:205 [ mul16u_compare::mf#0 ] ] with [ zp ZP_DWORD:221 [ mul16u_error::mf#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 ] ] with [ zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 ] ] with [ zp ZP_DWORD:98 [ mul16s_compare::ms#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 ] ] with [ zp ZP_DWORD:197 [ mul16u_compare::ms#0 mul16u_error::ms#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 ] ] with [ zp ZP_DWORD:189 [ mul16u_compare::ms#0 mul16u_error::ms#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 ] ] with [ zp ZP_DWORD:118 [ mulf16s::return#2 mul16s_compare::mf#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 ] ] with [ zp ZP_DWORD:164 [ mulf16u::return#0 mulf16u::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#4 mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] ] with [ zp ZP_WORD:189 [ muls16u::a#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 ] ] with [ zp ZP_DWORD:160 [ mulf16u::return#0 mulf16u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#4 mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] ] with [ zp ZP_WORD:181 [ muls16u::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#4 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] ] with [ zp ZP_WORD:41 [ mul16u::b#2 mul16u::b#3 mul16u::b#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#4 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 mul16u::b#2 mul16u::b#3 mul16u::b#1 ] ] with [ zp ZP_WORD:191 [ muls16u::b#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#4 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 mul16u::b#2 mul16u::b#3 mul16u::b#1 muls16u::b#0 ] ] with [ zp ZP_WORD:219 [ mul16u_error::b#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#4 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 mul16u::b#2 mul16u::b#3 mul16u::b#1 ] ] with [ zp ZP_WORD:183 [ muls16u::b#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#4 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 mul16u::b#2 mul16u::b#3 mul16u::b#1 muls16u::b#0 ] ] with [ zp ZP_WORD:211 [ mul16u_error::b#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 ] ] with [ zp ZP_DWORD:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 ] ] with [ zp ZP_DWORD:106 [ mul16s::return#2 mul16s_compare::mn#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 mul16u_compare::ms#0 mul16u_error::ms#0 ] ] with [ zp ZP_DWORD:55 [ muls16s::m#5 muls16s::return#0 muls16s::m#3 muls16s::m#1 muls16s::m#2 muls16s::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 mul16u_compare::ms#0 mul16u_error::ms#0 muls16s::m#5 muls16s::return#0 muls16s::m#3 muls16s::m#1 muls16s::m#2 muls16s::return#2 ] ] with [ zp ZP_DWORD:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 muls16u::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 mulf16u::return#0 mulf16u::return#3 ] ] with [ zp ZP_DWORD:138 [ mul16s_error::mf#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 mulf16u::return#0 mulf16u::return#3 mul16s_error::mf#0 ] ] with [ zp ZP_DWORD:213 [ mul16u_compare::mf#0 mul16u_error::mf#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 mulf16u::return#0 mulf16u::return#3 mul16s_error::mf#0 ] ] with [ zp ZP_DWORD:205 [ mul16u_compare::mf#0 mul16u_error::mf#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 mul16s_compare::mn#0 ] ] with [ zp ZP_DWORD:134 [ mul16s_error::mn#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 mul16s_compare::mn#0 mul16s_error::mn#0 ] ] with [ zp ZP_DWORD:205 [ mul16u_compare::mn#0 mul16u_error::mn#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 mul16s_compare::mn#0 mul16s_error::mn#0 ] ] with [ zp ZP_DWORD:197 [ mul16u_compare::mn#0 mul16u_error::mn#0 ] ] - score: 1 Coalescing zero page register [ zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] ] with [ zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] ] Coalescing zero page register [ zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 mul16u_compare::i#12 mul16u_compare::i#1 ] ] with [ zp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] ] Coalescing zero page register [ zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 mul16u_compare::i#12 mul16u_compare::i#1 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] ] with [ zp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] ] @@ -7760,20 +7696,16 @@ Coalescing zero page register [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compar Coalescing zero page register [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 ] ] with [ zp ZP_WORD:75 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] ] Coalescing zero page register [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] ] with [ zp ZP_WORD:83 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] ] Coalescing zero page register [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] ] with [ zp ZP_WORD:88 [ print_cls::sc#2 print_cls::sc#1 ] ] -Coalescing zero page register [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ] ] with [ zp ZP_WORD:148 [ mulf16s::$5 ] ] -Coalescing zero page register [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 mulf16s::$5 ] ] with [ zp ZP_WORD:154 [ mulf16s::$11 ] ] -Coalescing zero page register [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 mulf16s::$5 mulf16s::$11 ] ] with [ zp ZP_WORD:172 [ mul16s::$5 ] ] -Coalescing zero page register [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 mulf16s::$5 mulf16s::$11 mul16s::$5 ] ] with [ zp ZP_WORD:178 [ mul16s::$11 ] ] Coalescing zero page register [ zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 muls16s::b#0 mul16s::b#0 mulf16s::b#0 mul16s_error::b#0 ] ] with [ zp ZP_WORD:77 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] ] Coalescing zero page register [ zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 muls16s::b#0 mul16s::b#0 mulf16s::b#0 mul16s_error::b#0 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] ] with [ zp ZP_WORD:85 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] ] Coalescing zero page register [ zp ZP_WORD:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] ] with [ zp ZP_WORD:80 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] ] Coalescing zero page register [ zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] ] with [ zp ZP_WORD:43 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] ] Coalescing zero page register [ zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] ] with [ zp ZP_WORD:53 [ muls16s::j#2 muls16s::j#1 ] ] Coalescing zero page register [ zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::j#2 muls16s::j#1 ] ] with [ zp ZP_WORD:59 [ muls16s::i#2 muls16s::i#1 ] ] -Coalescing zero page register [ zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::j#2 muls16s::j#1 muls16s::i#2 muls16s::i#1 ] ] with [ zp ZP_WORD:150 [ mulf16s::$6 mulf16s::$16 ] ] -Coalescing zero page register [ zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::j#2 muls16s::j#1 muls16s::i#2 muls16s::i#1 mulf16s::$6 mulf16s::$16 ] ] with [ zp ZP_WORD:156 [ mulf16s::$12 mulf16s::$17 ] ] -Coalescing zero page register [ zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::j#2 muls16s::j#1 muls16s::i#2 muls16s::i#1 mulf16s::$6 mulf16s::$16 mulf16s::$12 mulf16s::$17 ] ] with [ zp ZP_WORD:174 [ mul16s::$6 mul16s::$16 ] ] -Coalescing zero page register [ zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::j#2 muls16s::j#1 muls16s::i#2 muls16s::i#1 mulf16s::$6 mulf16s::$16 mulf16s::$12 mulf16s::$17 mul16s::$6 mul16s::$16 ] ] with [ zp ZP_WORD:180 [ mul16s::$12 mul16s::$17 ] ] +Coalescing zero page register [ zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::j#2 muls16s::j#1 muls16s::i#2 muls16s::i#1 ] ] with [ zp ZP_WORD:148 [ mulf16s::$6 mulf16s::$16 ] ] +Coalescing zero page register [ zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::j#2 muls16s::j#1 muls16s::i#2 muls16s::i#1 mulf16s::$6 mulf16s::$16 ] ] with [ zp ZP_WORD:152 [ mulf16s::$12 mulf16s::$17 ] ] +Coalescing zero page register [ zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::j#2 muls16s::j#1 muls16s::i#2 muls16s::i#1 mulf16s::$6 mulf16s::$16 mulf16s::$12 mulf16s::$17 ] ] with [ zp ZP_WORD:168 [ mul16s::$6 mul16s::$16 ] ] +Coalescing zero page register [ zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::j#2 muls16s::j#1 muls16s::i#2 muls16s::i#1 mulf16s::$6 mulf16s::$16 mulf16s::$12 mulf16s::$17 mul16s::$6 mul16s::$16 ] ] with [ zp ZP_WORD:172 [ mul16s::$12 mul16s::$17 ] ] Coalescing zero page register [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 mulf16u::return#0 mulf16u::return#3 mul16s_error::mf#0 mul16u_compare::mf#0 mul16u_error::mf#0 ] ] with [ zp ZP_DWORD:49 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] ] Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] Allocated (was zp ZP_WORD:11) zp ZP_WORD:9 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::j#2 muls16s::j#1 muls16s::i#2 muls16s::i#1 mulf16s::$6 mulf16s::$16 mulf16s::$12 mulf16s::$17 mul16s::$6 mul16s::$16 mul16s::$12 mul16s::$17 ] @@ -7815,7 +7747,7 @@ main: { lda #5 sta BGCOL //SEG11 [5] call print_cls - //SEG12 [308] phi from main to print_cls [phi:main->print_cls] + //SEG12 [304] 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] @@ -7824,7 +7756,7 @@ main: { //SEG14 main::@1 b1: //SEG15 [7] call mulf_init - //SEG16 [279] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG16 [275] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] mulf_init_from_b1: jsr mulf_init //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -7833,7 +7765,7 @@ main: { //SEG18 main::@2 b2: //SEG19 [9] call mul16u_compare - //SEG20 [203] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] + //SEG20 [199] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] mul16u_compare_from_b2: jsr mul16u_compare //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] @@ -8583,9 +8515,7 @@ print_sword: { // Fixes offsets introduced by using unsigned multiplication // mulf16s(signed word zeropage(3) a, signed word zeropage(5) b) mulf16s: { - .label _5 = 3 .label _6 = 9 - .label _11 = 3 .label _12 = 9 .label _16 = 9 .label _17 = 9 @@ -8604,10 +8534,10 @@ mulf16s: { lda b+1 sta mulf16u.b+1 //SEG300 [138] call mulf16u - //SEG301 [155] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] + //SEG301 [153] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] mulf16u_from_mulf16s: - //SEG302 [155] phi (word) mulf16u::b#2 = (word~) mulf16u::b#4 [phi:mulf16s->mulf16u#0] -- register_copy - //SEG303 [155] phi (word) mulf16u::a#2 = (word~) mulf16u::a#4 [phi:mulf16s->mulf16u#1] -- register_copy + //SEG302 [153] phi (word) mulf16u::b#2 = (word~) mulf16u::b#4 [phi:mulf16s->mulf16u#0] -- register_copy + //SEG303 [153] phi (word) mulf16u::a#2 = (word~) mulf16u::a#4 [phi:mulf16s->mulf16u#1] -- register_copy jsr mulf16u //SEG304 [139] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 jmp b6 @@ -8620,17 +8550,12 @@ mulf16s: { jmp b3 //SEG308 mulf16s::@3 b3: - //SEG309 [142] (word~) mulf16s::$5 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 - lda m+2 - sta _5 - lda m+3 - sta _5+1 - //SEG310 [143] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 + //SEG309 [142] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG311 [144] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG310 [143] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 lda _16 sec sbc b @@ -8638,35 +8563,30 @@ mulf16s: { lda _16+1 sbc b+1 sta _16+1 - //SEG312 [145] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG311 [144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG313 [146] phi from mulf16s::@3 mulf16s::@6 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1] + //SEG312 [145] phi from mulf16s::@3 mulf16s::@6 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1] b1_from_b3: b1_from_b6: - //SEG314 [146] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1#0] -- register_copy + //SEG313 [145] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1#0] -- register_copy jmp b1 - //SEG315 mulf16s::@1 + //SEG314 mulf16s::@1 b1: - //SEG316 [147] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 + //SEG315 [146] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2_from_b1 jmp b4 - //SEG317 mulf16s::@4 + //SEG316 mulf16s::@4 b4: - //SEG318 [148] (word~) mulf16s::$11 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 - lda m+2 - sta _11 - lda m+3 - sta _11+1 - //SEG319 [149] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 + //SEG317 [147] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _12 lda m+3 sta _12+1 - //SEG320 [150] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG318 [148] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 lda _17 sec sbc a @@ -8674,26 +8594,26 @@ mulf16s: { lda _17+1 sbc a+1 sta _17+1 - //SEG321 [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG319 [149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - //SEG322 [152] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] + //SEG320 [150] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] b2_from_b1: b2_from_b4: - //SEG323 [152] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy + //SEG321 [150] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy jmp b2 - //SEG324 mulf16s::@2 + //SEG322 mulf16s::@2 b2: - //SEG325 [153] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG323 [151] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 -- vdsz1=_sdword_vduz1 jmp breturn - //SEG326 mulf16s::@return + //SEG324 mulf16s::@return breturn: - //SEG327 [154] return + //SEG325 [152] return rts } -//SEG328 mulf16u +//SEG326 mulf16u // Fast multiply two unsigned words to a double word result // Done in assembler to utilize fast addition A+X // mulf16u(word zeropage($15) a, word zeropage($17) b) @@ -8704,17 +8624,17 @@ mulf16u: { .label return = $11 .label a = $15 .label b = $17 - //SEG329 [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 + //SEG327 [154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 lda a sta memA lda a+1 sta memA+1 - //SEG330 [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 + //SEG328 [155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 lda b sta memB lda b+1 sta memB+1 - //SEG331 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } + //SEG329 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } lda memA sta sm1a+1 sta sm3a+1 @@ -8807,7 +8727,7 @@ mulf16u: { bcc !+ inc memR+3 !: - //SEG332 [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 + //SEG330 [157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 lda memR sta return lda memR+1 @@ -8817,19 +8737,17 @@ mulf16u: { lda memR+3 sta return+3 jmp breturn - //SEG333 mulf16u::@return + //SEG331 mulf16u::@return breturn: - //SEG334 [160] return + //SEG332 [158] return rts } -//SEG335 mul16s +//SEG333 mul16s // Multiply of two signed words to a signed double word // Fixes offsets introduced by using unsigned multiplication // mul16s(signed word zeropage(3) a, signed word zeropage(5) b) mul16s: { - .label _5 = 3 .label _6 = 9 - .label _11 = 3 .label _12 = 9 .label _16 = 9 .label _17 = 9 @@ -8837,44 +8755,39 @@ mul16s: { .label return = $19 .label a = 3 .label b = 5 - //SEG336 [161] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 + //SEG334 [159] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 lda b sta mul16u.b lda b+1 sta mul16u.b+1 - //SEG337 [162] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + //SEG335 [160] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG338 [163] call mul16u - //SEG339 [180] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG336 [161] call mul16u + //SEG337 [176] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //SEG340 [180] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy - //SEG341 [180] phi (word) mul16u::b#2 = (word~) mul16u::b#3 [phi:mul16s->mul16u#1] -- register_copy + //SEG338 [176] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG339 [176] phi (word) mul16u::b#2 = (word~) mul16u::b#3 [phi:mul16s->mul16u#1] -- register_copy jsr mul16u - //SEG342 [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG340 [162] (dword) mul16u::return#2 ← (dword) mul16u::res#2 jmp b6 - //SEG343 mul16s::@6 + //SEG341 mul16s::@6 b6: - //SEG344 [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - //SEG345 [166] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + //SEG342 [163] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + //SEG343 [164] 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_b6 jmp b3 - //SEG346 mul16s::@3 + //SEG344 mul16s::@3 b3: - //SEG347 [167] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 - lda m+2 - sta _5 - lda m+3 - sta _5+1 - //SEG348 [168] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG345 [165] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG349 [169] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG346 [166] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 lda _16 sec sbc b @@ -8882,35 +8795,30 @@ mul16s: { lda _16+1 sbc b+1 sta _16+1 - //SEG350 [170] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG347 [167] (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 - //SEG351 [171] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG348 [168] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] b1_from_b3: b1_from_b6: - //SEG352 [171] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG349 [168] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy jmp b1 - //SEG353 mul16s::@1 + //SEG350 mul16s::@1 b1: - //SEG354 [172] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 + //SEG351 [169] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2_from_b1 jmp b4 - //SEG355 mul16s::@4 + //SEG352 mul16s::@4 b4: - //SEG356 [173] (word~) mul16s::$11 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 - lda m+2 - sta _11 - lda m+3 - sta _11+1 - //SEG357 [174] (word~) mul16s::$12 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 + //SEG353 [170] (word~) mul16s::$12 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _12 lda m+3 sta _12+1 - //SEG358 [175] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG354 [171] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 lda _17 sec sbc a @@ -8918,26 +8826,26 @@ mul16s: { lda _17+1 sbc a+1 sta _17+1 - //SEG359 [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG355 [172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - //SEG360 [177] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] + //SEG356 [173] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] b2_from_b1: b2_from_b4: - //SEG361 [177] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy + //SEG357 [173] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy jmp b2 - //SEG362 mul16s::@2 + //SEG358 mul16s::@2 b2: - //SEG363 [178] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG359 [174] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 jmp breturn - //SEG364 mul16s::@return + //SEG360 mul16s::@return breturn: - //SEG365 [179] return + //SEG361 [175] return rts } -//SEG366 mul16u +//SEG362 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage(9) a, word zeropage($17) b) mul16u: { @@ -8946,7 +8854,7 @@ mul16u: { .label res = $19 .label return = $19 .label b = $17 - //SEG367 [181] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG363 [177] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -8954,42 +8862,42 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG368 [182] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG364 [178] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG369 [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG370 [182] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG365 [178] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG366 [178] 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 - //SEG371 [182] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG367 [178] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG372 mul16u::@1 + //SEG368 mul16u::@1 b1: - //SEG373 [183] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG369 [179] 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 - //SEG374 mul16u::@return + //SEG370 mul16u::@return breturn: - //SEG375 [184] return + //SEG371 [180] return rts - //SEG376 mul16u::@2 + //SEG372 mul16u::@2 b2: - //SEG377 [185] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG373 [181] (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 - //SEG378 [186] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 + //SEG374 [182] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4_from_b2 jmp b7 - //SEG379 mul16u::@7 + //SEG375 mul16u::@7 b7: - //SEG380 [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG376 [183] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -9003,30 +8911,30 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG381 [188] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG377 [184] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG382 [188] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG378 [184] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG383 mul16u::@4 + //SEG379 mul16u::@4 b4: - //SEG384 [189] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG380 [185] (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 - //SEG385 [190] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG381 [186] (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 - //SEG386 [182] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG382 [178] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //SEG387 [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG388 [182] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG389 [182] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG383 [178] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG384 [178] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG385 [178] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG390 muls16s +//SEG386 muls16s // Slow multiplication of signed words // Perform a signed multiplication by repeated addition/subtraction // muls16s(signed word zeropage(3) a, signed word zeropage(5) b) @@ -9037,27 +8945,27 @@ muls16s: { .label i = 9 .label a = 3 .label b = 5 - //SEG391 [191] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 -- vwsz1_lt_0_then_la1 + //SEG387 [187] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 -- vwsz1_lt_0_then_la1 lda a+1 bmi b5_from_muls16s jmp b6 - //SEG392 muls16s::@6 + //SEG388 muls16s::@6 b6: - //SEG393 [192] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 -- vwsz1_le_0_then_la1 + //SEG389 [188] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 -- vwsz1_le_0_then_la1 lda a+1 bmi b4_from_b6 bne !+ lda a beq b4_from_b6 !: - //SEG394 [193] phi from muls16s::@6 to muls16s::@3 [phi:muls16s::@6->muls16s::@3] + //SEG390 [189] phi from muls16s::@6 to muls16s::@3 [phi:muls16s::@6->muls16s::@3] b3_from_b6: - //SEG395 [193] phi (signed word) muls16s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#0] -- vwsz1=vbuc1 + //SEG391 [189] phi (signed word) muls16s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#0] -- vwsz1=vbuc1 lda #<0 sta j lda #>0 sta j+1 - //SEG396 [193] phi (signed dword) muls16s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#1] -- vdsz1=vbuc1 + //SEG392 [189] phi (signed dword) muls16s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#1] -- vdsz1=vbuc1 lda #<0 sta m lda #>0 @@ -9067,14 +8975,14 @@ muls16s: { lda #>0>>$10 sta m+3 jmp b3 - //SEG397 [193] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] + //SEG393 [189] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] b3_from_b3: - //SEG398 [193] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy - //SEG399 [193] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy + //SEG394 [189] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy + //SEG395 [189] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy jmp b3 - //SEG400 muls16s::@3 + //SEG396 muls16s::@3 b3: - //SEG401 [194] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 + //SEG397 [190] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -9094,26 +9002,26 @@ muls16s: { lda m+3 adc $ff sta m+3 - //SEG402 [195] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 + //SEG398 [191] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 inc j bne !+ inc j+1 !: - //SEG403 [196] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 + //SEG399 [192] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 lda j+1 cmp a+1 bne b3_from_b3 lda j cmp a bne b3_from_b3 - //SEG404 [197] phi from muls16s::@3 muls16s::@5 to muls16s::@4 [phi:muls16s::@3/muls16s::@5->muls16s::@4] + //SEG400 [193] phi from muls16s::@3 muls16s::@5 to muls16s::@4 [phi:muls16s::@3/muls16s::@5->muls16s::@4] b4_from_b3: b4_from_b5: - //SEG405 [197] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@5->muls16s::@4#0] -- register_copy + //SEG401 [193] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@5->muls16s::@4#0] -- register_copy jmp b4 - //SEG406 [197] phi from muls16s::@6 to muls16s::@4 [phi:muls16s::@6->muls16s::@4] + //SEG402 [193] phi from muls16s::@6 to muls16s::@4 [phi:muls16s::@6->muls16s::@4] b4_from_b6: - //SEG407 [197] phi (signed dword) muls16s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@4#0] -- vdsz1=vbuc1 + //SEG403 [193] phi (signed dword) muls16s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@4#0] -- vdsz1=vbuc1 lda #<0 sta return lda #>0 @@ -9123,21 +9031,21 @@ muls16s: { lda #>0>>$10 sta return+3 jmp b4 - //SEG408 muls16s::@4 + //SEG404 muls16s::@4 b4: jmp breturn - //SEG409 muls16s::@return + //SEG405 muls16s::@return breturn: - //SEG410 [198] return + //SEG406 [194] return rts - //SEG411 [199] phi from muls16s to muls16s::@5 [phi:muls16s->muls16s::@5] + //SEG407 [195] phi from muls16s to muls16s::@5 [phi:muls16s->muls16s::@5] b5_from_muls16s: - //SEG412 [199] phi (signed word) muls16s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#0] -- vwsz1=vbuc1 + //SEG408 [195] phi (signed word) muls16s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#0] -- vwsz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG413 [199] phi (signed dword) muls16s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#1] -- vdsz1=vbuc1 + //SEG409 [195] phi (signed dword) muls16s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#1] -- vdsz1=vbuc1 lda #<0 sta m lda #>0 @@ -9147,14 +9055,14 @@ muls16s: { lda #>0>>$10 sta m+3 jmp b5 - //SEG414 [199] phi from muls16s::@5 to muls16s::@5 [phi:muls16s::@5->muls16s::@5] + //SEG410 [195] phi from muls16s::@5 to muls16s::@5 [phi:muls16s::@5->muls16s::@5] b5_from_b5: - //SEG415 [199] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@5->muls16s::@5#0] -- register_copy - //SEG416 [199] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@5->muls16s::@5#1] -- register_copy + //SEG411 [195] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@5->muls16s::@5#0] -- register_copy + //SEG412 [195] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@5->muls16s::@5#1] -- register_copy jmp b5 - //SEG417 muls16s::@5 + //SEG413 muls16s::@5 b5: - //SEG418 [200] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 + //SEG414 [196] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -9174,13 +9082,13 @@ muls16s: { lda m+3 sbc $ff sta m+3 - //SEG419 [201] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 + //SEG415 [197] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 lda i bne !+ dec i+1 !: dec i - //SEG420 [202] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 -- vwsz1_neq_vwsz2_then_la1 + //SEG416 [198] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 -- vwsz1_neq_vwsz2_then_la1 lda i+1 cmp a+1 bne b5_from_b5 @@ -9189,7 +9097,7 @@ muls16s: { bne b5_from_b5 jmp b4_from_b5 } -//SEG421 mul16u_compare +//SEG417 mul16u_compare // Perform many possible word multiplications (slow and fast) and compare the results mul16u_compare: { .label a = $15 @@ -9198,62 +9106,62 @@ mul16u_compare: { .label mn = $19 .label mf = $11 .label i = 2 - //SEG422 [204] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] + //SEG418 [200] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] b1_from_mul16u_compare: - //SEG423 [204] phi (byte) mul16u_compare::i#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 + //SEG419 [200] phi (byte) mul16u_compare::i#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG424 [204] phi (word) mul16u_compare::b#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 + //SEG420 [200] phi (word) mul16u_compare::b#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 lda #<0 sta b lda #>0 sta b+1 - //SEG425 [204] phi (word) mul16u_compare::a#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 + //SEG421 [200] phi (word) mul16u_compare::a#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 lda #<0 sta a lda #>0 sta a+1 - //SEG426 [204] phi (byte*) print_char_cursor#139 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 + //SEG422 [200] phi (byte*) print_char_cursor#139 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 jmp b1 - //SEG427 [204] phi from mul16u_compare::@10 to mul16u_compare::@1 [phi:mul16u_compare::@10->mul16u_compare::@1] + //SEG423 [200] phi from mul16u_compare::@10 to mul16u_compare::@1 [phi:mul16u_compare::@10->mul16u_compare::@1] b1_from_b10: - //SEG428 [204] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@10->mul16u_compare::@1#0] -- register_copy - //SEG429 [204] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@10->mul16u_compare::@1#1] -- register_copy - //SEG430 [204] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@10->mul16u_compare::@1#2] -- register_copy - //SEG431 [204] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@10->mul16u_compare::@1#3] -- register_copy + //SEG424 [200] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@10->mul16u_compare::@1#0] -- register_copy + //SEG425 [200] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@10->mul16u_compare::@1#1] -- register_copy + //SEG426 [200] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@10->mul16u_compare::@1#2] -- register_copy + //SEG427 [200] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@10->mul16u_compare::@1#3] -- register_copy jmp b1 - //SEG432 mul16u_compare::@1 + //SEG428 mul16u_compare::@1 b1: - //SEG433 [205] call print_str - //SEG434 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] + //SEG429 [201] call print_str + //SEG430 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] print_str_from_b1: - //SEG435 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy - //SEG436 [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 + //SEG431 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy + //SEG432 [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG437 [206] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] + //SEG433 [202] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] b2_from_b1: - //SEG438 [206] phi (byte) mul16u_compare::j#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuyy=vbuc1 + //SEG434 [202] phi (byte) mul16u_compare::j#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG439 [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy - //SEG440 [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy + //SEG435 [202] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy + //SEG436 [202] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy jmp b2 - //SEG441 [206] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] + //SEG437 [202] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] b2_from_b5: - //SEG442 [206] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy - //SEG443 [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy - //SEG444 [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy + //SEG438 [202] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy + //SEG439 [202] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy + //SEG440 [202] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy jmp b2 - //SEG445 mul16u_compare::@2 + //SEG441 mul16u_compare::@2 b2: - //SEG446 [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 -- vwuz1=vwuz1_plus_vwuc1 + //SEG442 [203] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 -- vwuz1=vwuz1_plus_vwuc1 clc lda a adc #<$d2b @@ -9261,7 +9169,7 @@ mul16u_compare: { lda a+1 adc #>$d2b sta a+1 - //SEG447 [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 -- vwuz1=vwuz1_plus_vwuc1 + //SEG443 [204] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 -- vwuz1=vwuz1_plus_vwuc1 clc lda b adc #<$ffd @@ -9269,46 +9177,46 @@ mul16u_compare: { lda b+1 adc #>$ffd sta b+1 - //SEG448 [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 - //SEG449 [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 - //SEG450 [211] call muls16u + //SEG444 [205] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 + //SEG445 [206] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 + //SEG446 [207] call muls16u jsr muls16u - //SEG451 [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 + //SEG447 [208] (dword) muls16u::return#2 ← (dword) muls16u::return#0 jmp b13 - //SEG452 mul16u_compare::@13 + //SEG448 mul16u_compare::@13 b13: - //SEG453 [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 - //SEG454 [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG449 [209] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 + //SEG450 [210] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG455 [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 - //SEG456 [216] call mul16u - //SEG457 [180] phi from mul16u_compare::@13 to mul16u [phi:mul16u_compare::@13->mul16u] + //SEG451 [211] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 + //SEG452 [212] call mul16u + //SEG453 [176] phi from mul16u_compare::@13 to mul16u [phi:mul16u_compare::@13->mul16u] mul16u_from_b13: - //SEG458 [180] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@13->mul16u#0] -- register_copy - //SEG459 [180] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mul16u_compare::@13->mul16u#1] -- register_copy + //SEG454 [176] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@13->mul16u#0] -- register_copy + //SEG455 [176] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mul16u_compare::@13->mul16u#1] -- register_copy jsr mul16u - //SEG460 [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG456 [213] (dword) mul16u::return#3 ← (dword) mul16u::res#2 jmp b14 - //SEG461 mul16u_compare::@14 + //SEG457 mul16u_compare::@14 b14: - //SEG462 [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 - //SEG463 [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 - //SEG464 [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 - //SEG465 [221] call mulf16u - //SEG466 [155] phi from mul16u_compare::@14 to mulf16u [phi:mul16u_compare::@14->mulf16u] + //SEG458 [214] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 + //SEG459 [215] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 + //SEG460 [216] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 + //SEG461 [217] call mulf16u + //SEG462 [153] phi from mul16u_compare::@14 to mulf16u [phi:mul16u_compare::@14->mulf16u] mulf16u_from_b14: - //SEG467 [155] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@14->mulf16u#0] -- register_copy - //SEG468 [155] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@14->mulf16u#1] -- register_copy + //SEG463 [153] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@14->mulf16u#0] -- register_copy + //SEG464 [153] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@14->mulf16u#1] -- register_copy jsr mulf16u - //SEG469 [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 + //SEG465 [218] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 jmp b15 - //SEG470 mul16u_compare::@15 + //SEG466 mul16u_compare::@15 b15: - //SEG471 [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 - //SEG472 [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 + //SEG467 [219] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 + //SEG468 [220] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 lda ms cmp mf bne !+ @@ -9322,24 +9230,24 @@ mul16u_compare: { cmp mf+3 beq b3_from_b15 !: - //SEG473 [225] phi from mul16u_compare::@15 to mul16u_compare::@6 [phi:mul16u_compare::@15->mul16u_compare::@6] + //SEG469 [221] phi from mul16u_compare::@15 to mul16u_compare::@6 [phi:mul16u_compare::@15->mul16u_compare::@6] b6_from_b15: jmp b6 - //SEG474 mul16u_compare::@6 + //SEG470 mul16u_compare::@6 b6: - //SEG475 [226] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] + //SEG471 [222] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] b3_from_b6: - //SEG476 [226] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuxx=vbuc1 + //SEG472 [222] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG477 [226] phi from mul16u_compare::@15 to mul16u_compare::@3 [phi:mul16u_compare::@15->mul16u_compare::@3] + //SEG473 [222] phi from mul16u_compare::@15 to mul16u_compare::@3 [phi:mul16u_compare::@15->mul16u_compare::@3] b3_from_b15: - //SEG478 [226] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul16u_compare::@15->mul16u_compare::@3#0] -- vbuxx=vbuc1 + //SEG474 [222] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul16u_compare::@15->mul16u_compare::@3#0] -- vbuxx=vbuc1 ldx #1 jmp b3 - //SEG479 mul16u_compare::@3 + //SEG475 mul16u_compare::@3 b3: - //SEG480 [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 -- vduz1_eq_vduz2_then_la1 + //SEG476 [223] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 -- vduz1_eq_vduz2_then_la1 lda ms cmp mn bne !+ @@ -9353,113 +9261,113 @@ mul16u_compare: { cmp mn+3 beq b22_from_b3 !: - //SEG481 [228] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] + //SEG477 [224] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] b4_from_b3: - //SEG482 [228] phi (byte) mul16u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuxx=vbuc1 + //SEG478 [224] phi (byte) mul16u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuxx=vbuc1 ldx #0 jmp b4 - //SEG483 mul16u_compare::@4 + //SEG479 mul16u_compare::@4 b4: - //SEG484 [229] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5 -- vbuxx_neq_0_then_la1 + //SEG480 [225] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5 -- vbuxx_neq_0_then_la1 cpx #0 bne b5 jmp b8 - //SEG485 mul16u_compare::@8 + //SEG481 mul16u_compare::@8 b8: - //SEG486 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG482 [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG487 [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG483 [227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u_error.a lda a+1 sta mul16u_error.a+1 - //SEG488 [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 - //SEG489 [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 - //SEG490 [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 - //SEG491 [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 - //SEG492 [236] call mul16u_error - //SEG493 [249] phi from mul16u_compare::@8 to mul16u_error [phi:mul16u_compare::@8->mul16u_error] + //SEG484 [228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 + //SEG485 [229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 + //SEG486 [230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 + //SEG487 [231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 + //SEG488 [232] call mul16u_error + //SEG489 [245] phi from mul16u_compare::@8 to mul16u_error [phi:mul16u_compare::@8->mul16u_error] mul16u_error_from_b8: jsr mul16u_error jmp breturn - //SEG494 mul16u_compare::@return + //SEG490 mul16u_compare::@return breturn: - //SEG495 [237] return + //SEG491 [233] return rts - //SEG496 mul16u_compare::@5 + //SEG492 mul16u_compare::@5 b5: - //SEG497 [238] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuyy=_inc_vbuyy + //SEG493 [234] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuyy=_inc_vbuyy iny - //SEG498 [239] if((byte) mul16u_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@2 -- vbuyy_neq_vbuc1_then_la1 + //SEG494 [235] if((byte) mul16u_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@2 -- vbuyy_neq_vbuc1_then_la1 cpy #$10 bne b2_from_b5 jmp b10 - //SEG499 mul16u_compare::@10 + //SEG495 mul16u_compare::@10 b10: - //SEG500 [240] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 + //SEG496 [236] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 inc i - //SEG501 [241] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG497 [237] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b10 - //SEG502 [242] phi from mul16u_compare::@10 to mul16u_compare::@11 [phi:mul16u_compare::@10->mul16u_compare::@11] + //SEG498 [238] phi from mul16u_compare::@10 to mul16u_compare::@11 [phi:mul16u_compare::@10->mul16u_compare::@11] b11_from_b10: jmp b11 - //SEG503 mul16u_compare::@11 + //SEG499 mul16u_compare::@11 b11: - //SEG504 [243] call print_ln - //SEG505 [59] phi from mul16u_compare::@11 to print_ln [phi:mul16u_compare::@11->print_ln] + //SEG500 [239] call print_ln + //SEG501 [59] phi from mul16u_compare::@11 to print_ln [phi:mul16u_compare::@11->print_ln] print_ln_from_b11: - //SEG506 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@11->print_ln#0] -- register_copy - //SEG507 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare::@11->print_ln#1] -- pbuz1=pbuc1 + //SEG502 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@11->print_ln#0] -- register_copy + //SEG503 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare::@11->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln jmp b17 - //SEG508 mul16u_compare::@17 + //SEG504 mul16u_compare::@17 b17: - //SEG509 [244] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG505 [240] (byte*~) print_char_cursor#192 ← (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 - //SEG510 [245] call print_str - //SEG511 [64] phi from mul16u_compare::@17 to print_str [phi:mul16u_compare::@17->print_str] + //SEG506 [241] call print_str + //SEG507 [64] phi from mul16u_compare::@17 to print_str [phi:mul16u_compare::@17->print_str] print_str_from_b17: - //SEG512 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#192 [phi:mul16u_compare::@17->print_str#0] -- register_copy - //SEG513 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str1 [phi:mul16u_compare::@17->print_str#1] -- pbuz1=pbuc1 + //SEG508 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#192 [phi:mul16u_compare::@17->print_str#0] -- register_copy + //SEG509 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str1 [phi:mul16u_compare::@17->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG514 [246] phi from mul16u_compare::@17 to mul16u_compare::@18 [phi:mul16u_compare::@17->mul16u_compare::@18] + //SEG510 [242] phi from mul16u_compare::@17 to mul16u_compare::@18 [phi:mul16u_compare::@17->mul16u_compare::@18] b18_from_b17: jmp b18 - //SEG515 mul16u_compare::@18 + //SEG511 mul16u_compare::@18 b18: - //SEG516 [247] call print_ln - //SEG517 [59] phi from mul16u_compare::@18 to print_ln [phi:mul16u_compare::@18->print_ln] + //SEG512 [243] call print_ln + //SEG513 [59] phi from mul16u_compare::@18 to print_ln [phi:mul16u_compare::@18->print_ln] print_ln_from_b18: - //SEG518 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@18->print_ln#0] -- register_copy - //SEG519 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@18->print_ln#1] -- register_copy + //SEG514 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@18->print_ln#0] -- register_copy + //SEG515 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@18->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG520 [248] phi from mul16u_compare::@3 to mul16u_compare::@22 [phi:mul16u_compare::@3->mul16u_compare::@22] + //SEG516 [244] phi from mul16u_compare::@3 to mul16u_compare::@22 [phi:mul16u_compare::@3->mul16u_compare::@22] b22_from_b3: jmp b22 - //SEG521 mul16u_compare::@22 + //SEG517 mul16u_compare::@22 b22: - //SEG522 [228] phi from mul16u_compare::@22 to mul16u_compare::@4 [phi:mul16u_compare::@22->mul16u_compare::@4] + //SEG518 [224] phi from mul16u_compare::@22 to mul16u_compare::@4 [phi:mul16u_compare::@22->mul16u_compare::@4] b4_from_b22: - //SEG523 [228] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@22->mul16u_compare::@4#0] -- register_copy + //SEG519 [224] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@22->mul16u_compare::@4#0] -- register_copy jmp b4 str1: .text "word multiply results match!@" } -//SEG524 mul16u_error +//SEG520 mul16u_error // mul16u_error(word zeropage(3) a, word zeropage($17) b, dword zeropage($b) ms, dword zeropage($19) mn, dword zeropage($11) mf) mul16u_error: { .label a = 3 @@ -9467,99 +9375,99 @@ mul16u_error: { .label ms = $b .label mn = $19 .label mf = $11 - //SEG525 [250] call print_str - //SEG526 [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] + //SEG521 [246] call print_str + //SEG522 [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] print_str_from_mul16u_error: - //SEG527 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16u_error->print_str#0] -- register_copy - //SEG528 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str [phi:mul16u_error->print_str#1] -- pbuz1=pbuc1 + //SEG523 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16u_error->print_str#0] -- register_copy + //SEG524 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str [phi:mul16u_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b1 - //SEG529 mul16u_error::@1 + //SEG525 mul16u_error::@1 b1: - //SEG530 [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 - //SEG531 [252] call print_word - //SEG532 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] + //SEG526 [247] (word) print_word::w#3 ← (word) mul16u_error::a#0 + //SEG527 [248] call print_word + //SEG528 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] print_word_from_b1: - //SEG533 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@1->print_word#0] -- register_copy - //SEG534 [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy + //SEG529 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@1->print_word#0] -- register_copy + //SEG530 [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy jsr print_word - //SEG535 [253] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] + //SEG531 [249] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] b2_from_b1: jmp b2 - //SEG536 mul16u_error::@2 + //SEG532 mul16u_error::@2 b2: - //SEG537 [254] call print_str - //SEG538 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] + //SEG533 [250] call print_str + //SEG534 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] print_str_from_b2: - //SEG539 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy - //SEG540 [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG535 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy + //SEG536 [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b3 - //SEG541 mul16u_error::@3 + //SEG537 mul16u_error::@3 b3: - //SEG542 [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 + //SEG538 [251] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 lda b sta print_word.w lda b+1 sta print_word.w+1 - //SEG543 [256] call print_word - //SEG544 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] + //SEG539 [252] call print_word + //SEG540 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] print_word_from_b3: - //SEG545 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@3->print_word#0] -- register_copy - //SEG546 [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy + //SEG541 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@3->print_word#0] -- register_copy + //SEG542 [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy jsr print_word - //SEG547 [257] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] + //SEG543 [253] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] b4_from_b3: jmp b4 - //SEG548 mul16u_error::@4 + //SEG544 mul16u_error::@4 b4: - //SEG549 [258] call print_str - //SEG550 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] + //SEG545 [254] call print_str + //SEG546 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] print_str_from_b4: - //SEG551 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy - //SEG552 [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG547 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy + //SEG548 [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b5 - //SEG553 mul16u_error::@5 + //SEG549 mul16u_error::@5 b5: - //SEG554 [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 - //SEG555 [260] call print_dword - //SEG556 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] + //SEG550 [255] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 + //SEG551 [256] call print_dword + //SEG552 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] print_dword_from_b5: - //SEG557 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@5->print_dword#0] -- register_copy - //SEG558 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy + //SEG553 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@5->print_dword#0] -- register_copy + //SEG554 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy jsr print_dword - //SEG559 [261] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] + //SEG555 [257] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] b6_from_b5: jmp b6 - //SEG560 mul16u_error::@6 + //SEG556 mul16u_error::@6 b6: - //SEG561 [262] call print_str - //SEG562 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] + //SEG557 [258] call print_str + //SEG558 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] print_str_from_b6: - //SEG563 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy - //SEG564 [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG559 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy + //SEG560 [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str jmp b7 - //SEG565 mul16u_error::@7 + //SEG561 mul16u_error::@7 b7: - //SEG566 [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 + //SEG562 [259] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 lda mn sta print_dword.dw lda mn+1 @@ -9568,31 +9476,31 @@ mul16u_error: { sta print_dword.dw+2 lda mn+3 sta print_dword.dw+3 - //SEG567 [264] call print_dword - //SEG568 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] + //SEG563 [260] call print_dword + //SEG564 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] print_dword_from_b7: - //SEG569 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@7->print_dword#0] -- register_copy - //SEG570 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy + //SEG565 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@7->print_dword#0] -- register_copy + //SEG566 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy jsr print_dword - //SEG571 [265] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] + //SEG567 [261] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] b8_from_b7: jmp b8 - //SEG572 mul16u_error::@8 + //SEG568 mul16u_error::@8 b8: - //SEG573 [266] call print_str - //SEG574 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] + //SEG569 [262] call print_str + //SEG570 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] print_str_from_b8: - //SEG575 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy - //SEG576 [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG571 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy + //SEG572 [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str jmp b9 - //SEG577 mul16u_error::@9 + //SEG573 mul16u_error::@9 b9: - //SEG578 [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 + //SEG574 [263] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 lda mf sta print_dword.dw lda mf+1 @@ -9601,35 +9509,35 @@ mul16u_error: { sta print_dword.dw+2 lda mf+3 sta print_dword.dw+3 - //SEG579 [268] call print_dword - //SEG580 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] + //SEG575 [264] call print_dword + //SEG576 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] print_dword_from_b9: - //SEG581 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@9->print_dword#0] -- register_copy - //SEG582 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy + //SEG577 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@9->print_dword#0] -- register_copy + //SEG578 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy jsr print_dword - //SEG583 [269] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] + //SEG579 [265] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] b10_from_b9: jmp b10 - //SEG584 mul16u_error::@10 + //SEG580 mul16u_error::@10 b10: - //SEG585 [270] call print_ln - //SEG586 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] + //SEG581 [266] call print_ln + //SEG582 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] print_ln_from_b10: - //SEG587 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16u_error::@10->print_ln#0] -- register_copy - //SEG588 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 + //SEG583 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16u_error::@10->print_ln#0] -- register_copy + //SEG584 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln jmp breturn - //SEG589 mul16u_error::@return + //SEG585 mul16u_error::@return breturn: - //SEG590 [271] return + //SEG586 [267] return rts str: .text "multiply mismatch @" } -//SEG591 muls16u +//SEG587 muls16u // Slow multiplication of unsigned words // Calculate an unsigned multiplication by repeated addition // muls16u(word zeropage($15) a, word zeropage($17) b) @@ -9639,20 +9547,20 @@ muls16u: { .label i = 3 .label a = $15 .label b = $17 - //SEG592 [272] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 + //SEG588 [268] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 lda a bne !+ lda a+1 beq b1_from_muls16u !: - //SEG593 [273] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] + //SEG589 [269] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] b2_from_muls16u: - //SEG594 [273] phi (word) muls16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 + //SEG590 [269] phi (word) muls16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG595 [273] phi (dword) muls16u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 + //SEG591 [269] phi (dword) muls16u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 lda #0 sta m lda #0 @@ -9660,14 +9568,14 @@ muls16u: { sta m+2 sta m+3 jmp b2 - //SEG596 [273] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] + //SEG592 [269] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] b2_from_b2: - //SEG597 [273] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy - //SEG598 [273] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy + //SEG593 [269] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy + //SEG594 [269] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy jmp b2 - //SEG599 muls16u::@2 + //SEG595 muls16u::@2 b2: - //SEG600 [274] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 + //SEG596 [270] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 lda m clc adc b @@ -9681,25 +9589,25 @@ muls16u: { lda m+3 adc #0 sta m+3 - //SEG601 [275] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 + //SEG597 [271] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG602 [276] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 + //SEG598 [272] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 lda i+1 cmp a+1 bne b2_from_b2 lda i cmp a bne b2_from_b2 - //SEG603 [277] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] + //SEG599 [273] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] b1_from_b2: - //SEG604 [277] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy + //SEG600 [273] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy jmp b1 - //SEG605 [277] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] + //SEG601 [273] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] b1_from_muls16u: - //SEG606 [277] phi (dword) muls16u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 + //SEG602 [273] phi (dword) muls16u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 lda #0 sta return lda #0 @@ -9707,15 +9615,15 @@ muls16u: { sta return+2 sta return+3 jmp b1 - //SEG607 muls16u::@1 + //SEG603 muls16u::@1 b1: jmp breturn - //SEG608 muls16u::@return + //SEG604 muls16u::@return breturn: - //SEG609 [278] return + //SEG605 [274] return rts } -//SEG610 mulf_init +//SEG606 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label sqr1_hi = 5 @@ -9725,81 +9633,81 @@ mulf_init: { .label sqr2_hi = 5 .label sqr2_lo = 3 .label dir = 2 - //SEG611 [280] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG607 [276] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //SEG612 [280] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG608 [276] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG613 [280] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG609 [276] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG614 [280] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG610 [276] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG615 [280] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG611 [276] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #<0 sta sqr lda #>0 sta sqr+1 - //SEG616 [280] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 + //SEG612 [276] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG617 [280] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG613 [276] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //SEG618 [280] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG619 [280] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG620 [280] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG621 [280] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG622 [280] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG614 [276] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG615 [276] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG616 [276] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG617 [276] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG618 [276] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG623 mulf_init::@1 + //SEG619 mulf_init::@1 b1: - //SEG624 [281] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG620 [277] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG625 [282] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG621 [278] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG626 [283] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 + //SEG622 [279] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 cmp #0 bne b2_from_b1 jmp b5 - //SEG627 mulf_init::@5 + //SEG623 mulf_init::@5 b5: - //SEG628 [284] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG624 [280] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG629 [285] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG625 [281] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG630 [286] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG626 [282] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] b2_from_b1: b2_from_b5: - //SEG631 [286] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy - //SEG632 [286] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy + //SEG627 [282] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy + //SEG628 [282] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy jmp b2 - //SEG633 mulf_init::@2 + //SEG629 mulf_init::@2 b2: - //SEG634 [287] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG630 [283] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG635 [288] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa + //SEG631 [284] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG636 [289] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG632 [285] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG637 [290] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa + //SEG633 [286] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_hi),y - //SEG638 [291] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG634 [287] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG639 [292] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG635 [288] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -9807,80 +9715,80 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG640 [293] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG636 [289] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG641 [294] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG637 [290] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo cmp #mulf_init::@3] + //SEG638 [291] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] b3_from_b2: - //SEG643 [295] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 + //SEG639 [291] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG644 [295] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 + //SEG640 [291] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG645 [295] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 + //SEG641 [291] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG646 [295] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 + //SEG642 [291] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 ldx #-1 jmp b3 - //SEG647 [295] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG643 [291] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] b3_from_b4: - //SEG648 [295] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy - //SEG649 [295] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy - //SEG650 [295] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy - //SEG651 [295] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG644 [291] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG645 [291] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG646 [291] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG647 [291] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy jmp b3 - //SEG652 mulf_init::@3 + //SEG648 mulf_init::@3 b3: - //SEG653 [296] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG649 [292] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG654 [297] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG650 [293] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_hi,x ldy #0 sta (sqr2_hi),y - //SEG655 [298] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG651 [294] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG656 [299] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG652 [295] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - //SEG657 [300] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 + //SEG653 [296] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 cpx #0 bne b12_from_b3 - //SEG658 [301] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG654 [297] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] b4_from_b3: - //SEG659 [301] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG655 [297] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b4 - //SEG660 mulf_init::@4 + //SEG656 mulf_init::@4 b4: - //SEG661 [302] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG657 [298] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG662 [303] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 + //SEG658 [299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b3_from_b4 @@ -9888,58 +9796,58 @@ mulf_init: { cmp #mulf_init::@12] + //SEG664 [303] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] b12_from_b3: jmp b12 - //SEG669 mulf_init::@12 + //SEG665 mulf_init::@12 b12: - //SEG670 [301] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG666 [297] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] b4_from_b12: - //SEG671 [301] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG667 [297] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy jmp b4 } -//SEG672 print_cls +//SEG668 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 3 - //SEG673 [309] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG669 [305] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG674 [309] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG670 [305] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG675 [309] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG671 [305] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG676 [309] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG672 [305] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG677 print_cls::@1 + //SEG673 print_cls::@1 b1: - //SEG678 [310] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG674 [306] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG679 [311] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG675 [307] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG680 [312] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG676 [308] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -9947,9 +9855,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG681 print_cls::@return + //SEG677 print_cls::@return breturn: - //SEG682 [313] return + //SEG678 [309] return rts } print_hextab: .text "0123456789abcdef" @@ -10385,7 +10293,7 @@ Removing unreachable instruction jmp b4 Removing unreachable instruction jmp b4 Succesful ASM optimization Pass5UnreachableCodeElimination Fixing long branch [110] bne b1 to beq -Fixing long branch [858] bne b1 to beq +Fixing long branch [838] bne b1 to beq FINAL SYMBOL TABLE (label) @40 @@ -10399,11 +10307,9 @@ FINAL SYMBOL TABLE (label) main::@3 (label) main::@return (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) -(word~) mul16s::$11 $11 zp ZP_WORD:3 20.0 (word~) mul16s::$12 $12 zp ZP_WORD:9 4.0 (word~) mul16s::$16 $16 zp ZP_WORD:9 4.0 (word~) mul16s::$17 $17 zp ZP_WORD:9 4.0 -(word~) mul16s::$5 $5 zp ZP_WORD:3 20.0 (word~) mul16s::$6 $6 zp ZP_WORD:9 4.0 (label) mul16s::@1 (label) mul16s::@2 @@ -10412,15 +10318,15 @@ FINAL SYMBOL TABLE (label) mul16s::@6 (label) mul16s::@return (signed word) mul16s::a -(signed word) mul16s::a#0 a zp ZP_WORD:3 6.4375 +(signed word) mul16s::a#0 a zp ZP_WORD:3 7.357142857142858 (signed word) mul16s::b -(signed word) mul16s::b#0 b zp ZP_WORD:5 8.583333333333332 +(signed word) mul16s::b#0 b zp ZP_WORD:5 9.363636363636363 (dword) mul16s::m (dword) mul16s::m#0 m zp ZP_DWORD:25 2.0 (dword) mul16s::m#1 m zp ZP_DWORD:25 4.0 (dword) mul16s::m#2 m zp ZP_DWORD:25 4.0 (dword) mul16s::m#4 m zp ZP_DWORD:25 6.0 -(dword) mul16s::m#5 m zp ZP_DWORD:25 2.4 +(dword) mul16s::m#5 m zp ZP_DWORD:25 2.5 (signed dword) mul16s::return (signed dword) mul16s::return#0 return zp ZP_DWORD:25 34.33333333333333 (signed dword) mul16s::return#2 return zp ZP_DWORD:25 202.0 @@ -10581,11 +10487,9 @@ FINAL SYMBOL TABLE (dword) mul16u_error::ms#0 ms zp ZP_DWORD:11 0.3076923076923077 (const string) mul16u_error::str str = (string) "multiply mismatch @" (signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b) -(word~) mulf16s::$11 $11 zp ZP_WORD:3 20.0 (word~) mulf16s::$12 $12 zp ZP_WORD:9 4.0 (word~) mulf16s::$16 $16 zp ZP_WORD:9 4.0 (word~) mulf16s::$17 $17 zp ZP_WORD:9 4.0 -(word~) mulf16s::$5 $5 zp ZP_WORD:3 20.0 (word~) mulf16s::$6 $6 zp ZP_WORD:9 4.0 (label) mulf16s::@1 (label) mulf16s::@2 @@ -10594,15 +10498,15 @@ FINAL SYMBOL TABLE (label) mulf16s::@6 (label) mulf16s::@return (signed word) mulf16s::a -(signed word) mulf16s::a#0 a zp ZP_WORD:3 6.4375 +(signed word) mulf16s::a#0 a zp ZP_WORD:3 7.357142857142858 (signed word) mulf16s::b -(signed word) mulf16s::b#0 b zp ZP_WORD:5 8.583333333333332 +(signed word) mulf16s::b#0 b zp ZP_WORD:5 9.363636363636363 (dword) mulf16s::m (dword) mulf16s::m#0 m zp ZP_DWORD:17 2.0 (dword) mulf16s::m#1 m zp ZP_DWORD:17 4.0 (dword) mulf16s::m#2 m zp ZP_DWORD:17 4.0 (dword) mulf16s::m#4 m zp ZP_DWORD:17 6.0 -(dword) mulf16s::m#5 m zp ZP_DWORD:17 2.4 +(dword) mulf16s::m#5 m zp ZP_DWORD:17 2.5 (signed dword) mulf16s::return (signed dword) mulf16s::return#0 return zp ZP_DWORD:17 34.33333333333333 (signed dword) mulf16s::return#2 return zp ZP_DWORD:17 202.0 @@ -10822,7 +10726,7 @@ FINAL SYMBOL TABLE (const string) str4 str4 = (string) " / fast:@" zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 mul16u_compare::i#12 mul16u_compare::i#1 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#3 ] -zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 mulf16s::$5 mulf16s::$11 mul16s::$5 mul16s::$11 ] +zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ] zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 muls16s::b#0 mul16s::b#0 mulf16s::b#0 mul16s_error::b#0 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ] reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] @@ -10849,7 +10753,7 @@ reg byte a [ mulf_init::$6 ] FINAL ASSEMBLER -Score: 444967 +Score: 444919 //SEG0 File Comments // Test the fast multiplication library @@ -10873,17 +10777,17 @@ main: { lda #5 sta BGCOL //SEG11 [5] call print_cls - //SEG12 [308] phi from main to print_cls [phi:main->print_cls] + //SEG12 [304] 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 mulf_init - //SEG16 [279] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG16 [275] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] jsr mulf_init //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] //SEG18 main::@2 //SEG19 [9] call mul16u_compare - //SEG20 [203] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] + //SEG20 [199] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] jsr mul16u_compare //SEG21 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] //SEG22 main::@3 @@ -11492,9 +11396,7 @@ print_sword: { // Fixes offsets introduced by using unsigned multiplication // mulf16s(signed word zeropage(3) a, signed word zeropage(5) b) mulf16s: { - .label _5 = 3 .label _6 = 9 - .label _11 = 3 .label _12 = 9 .label _16 = 9 .label _17 = 9 @@ -11513,9 +11415,9 @@ mulf16s: { lda b+1 sta mulf16u.b+1 //SEG300 [138] call mulf16u - //SEG301 [155] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] - //SEG302 [155] phi (word) mulf16u::b#2 = (word~) mulf16u::b#4 [phi:mulf16s->mulf16u#0] -- register_copy - //SEG303 [155] phi (word) mulf16u::a#2 = (word~) mulf16u::a#4 [phi:mulf16s->mulf16u#1] -- register_copy + //SEG301 [153] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] + //SEG302 [153] phi (word) mulf16u::b#2 = (word~) mulf16u::b#4 [phi:mulf16s->mulf16u#0] -- register_copy + //SEG303 [153] phi (word) mulf16u::a#2 = (word~) mulf16u::a#4 [phi:mulf16s->mulf16u#1] -- register_copy jsr mulf16u //SEG304 [139] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 //SEG305 mulf16s::@6 @@ -11524,17 +11426,12 @@ mulf16s: { lda a+1 bpl b1 //SEG308 mulf16s::@3 - //SEG309 [142] (word~) mulf16s::$5 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 - lda m+2 - sta _5 - lda m+3 - sta _5+1 - //SEG310 [143] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 + //SEG309 [142] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG311 [144] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG310 [143] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 lda _16 sec sbc b @@ -11542,30 +11439,25 @@ mulf16s: { lda _16+1 sbc b+1 sta _16+1 - //SEG312 [145] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG311 [144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG313 [146] phi from mulf16s::@3 mulf16s::@6 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1] - //SEG314 [146] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1#0] -- register_copy - //SEG315 mulf16s::@1 + //SEG312 [145] phi from mulf16s::@3 mulf16s::@6 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1] + //SEG313 [145] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1#0] -- register_copy + //SEG314 mulf16s::@1 b1: - //SEG316 [147] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 + //SEG315 [146] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2 - //SEG317 mulf16s::@4 - //SEG318 [148] (word~) mulf16s::$11 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 - lda m+2 - sta _11 - lda m+3 - sta _11+1 - //SEG319 [149] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 + //SEG316 mulf16s::@4 + //SEG317 [147] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _12 lda m+3 sta _12+1 - //SEG320 [150] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG318 [148] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 lda _17 sec sbc a @@ -11573,21 +11465,21 @@ mulf16s: { lda _17+1 sbc a+1 sta _17+1 - //SEG321 [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG319 [149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - //SEG322 [152] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] - //SEG323 [152] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy - //SEG324 mulf16s::@2 + //SEG320 [150] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] + //SEG321 [150] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy + //SEG322 mulf16s::@2 b2: - //SEG325 [153] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 -- vdsz1=_sdword_vduz1 - //SEG326 mulf16s::@return - //SEG327 [154] return + //SEG323 [151] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG324 mulf16s::@return + //SEG325 [152] return rts } -//SEG328 mulf16u +//SEG326 mulf16u // Fast multiply two unsigned words to a double word result // Done in assembler to utilize fast addition A+X // mulf16u(word zeropage($15) a, word zeropage($17) b) @@ -11598,17 +11490,17 @@ mulf16u: { .label return = $11 .label a = $15 .label b = $17 - //SEG329 [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 + //SEG327 [154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 lda a sta memA lda a+1 sta memA+1 - //SEG330 [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 + //SEG328 [155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 lda b sta memB lda b+1 sta memB+1 - //SEG331 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } + //SEG329 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } lda memA sta sm1a+1 sta sm3a+1 @@ -11701,7 +11593,7 @@ mulf16u: { bcc !+ inc memR+3 !: - //SEG332 [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 + //SEG330 [157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 lda memR sta return lda memR+1 @@ -11710,18 +11602,16 @@ mulf16u: { sta return+2 lda memR+3 sta return+3 - //SEG333 mulf16u::@return - //SEG334 [160] return + //SEG331 mulf16u::@return + //SEG332 [158] return rts } -//SEG335 mul16s +//SEG333 mul16s // Multiply of two signed words to a signed double word // Fixes offsets introduced by using unsigned multiplication // mul16s(signed word zeropage(3) a, signed word zeropage(5) b) mul16s: { - .label _5 = 3 .label _6 = 9 - .label _11 = 3 .label _12 = 9 .label _16 = 9 .label _17 = 9 @@ -11729,39 +11619,34 @@ mul16s: { .label return = $19 .label a = 3 .label b = 5 - //SEG336 [161] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 + //SEG334 [159] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 lda b sta mul16u.b lda b+1 sta mul16u.b+1 - //SEG337 [162] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + //SEG335 [160] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG338 [163] call mul16u - //SEG339 [180] phi from mul16s to mul16u [phi:mul16s->mul16u] - //SEG340 [180] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy - //SEG341 [180] phi (word) mul16u::b#2 = (word~) mul16u::b#3 [phi:mul16s->mul16u#1] -- register_copy + //SEG336 [161] call mul16u + //SEG337 [176] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG338 [176] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG339 [176] phi (word) mul16u::b#2 = (word~) mul16u::b#3 [phi:mul16s->mul16u#1] -- register_copy jsr mul16u - //SEG342 [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 - //SEG343 mul16s::@6 - //SEG344 [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - //SEG345 [166] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + //SEG340 [162] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG341 mul16s::@6 + //SEG342 [163] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + //SEG343 [164] 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 - //SEG346 mul16s::@3 - //SEG347 [167] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 - lda m+2 - sta _5 - lda m+3 - sta _5+1 - //SEG348 [168] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG344 mul16s::@3 + //SEG345 [165] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG349 [169] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG346 [166] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 lda _16 sec sbc b @@ -11769,30 +11654,25 @@ mul16s: { lda _16+1 sbc b+1 sta _16+1 - //SEG350 [170] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG347 [167] (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 - //SEG351 [171] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] - //SEG352 [171] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy - //SEG353 mul16s::@1 + //SEG348 [168] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG349 [168] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG350 mul16s::@1 b1: - //SEG354 [172] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 + //SEG351 [169] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2 - //SEG355 mul16s::@4 - //SEG356 [173] (word~) mul16s::$11 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 - lda m+2 - sta _11 - lda m+3 - sta _11+1 - //SEG357 [174] (word~) mul16s::$12 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 + //SEG352 mul16s::@4 + //SEG353 [170] (word~) mul16s::$12 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _12 lda m+3 sta _12+1 - //SEG358 [175] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG354 [171] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 lda _17 sec sbc a @@ -11800,21 +11680,21 @@ mul16s: { lda _17+1 sbc a+1 sta _17+1 - //SEG359 [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG355 [172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - //SEG360 [177] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] - //SEG361 [177] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy - //SEG362 mul16s::@2 + //SEG356 [173] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] + //SEG357 [173] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy + //SEG358 mul16s::@2 b2: - //SEG363 [178] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 - //SEG364 mul16s::@return - //SEG365 [179] return + //SEG359 [174] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG360 mul16s::@return + //SEG361 [175] return rts } -//SEG366 mul16u +//SEG362 mul16u // Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word // mul16u(word zeropage(9) a, word zeropage($17) b) mul16u: { @@ -11823,7 +11703,7 @@ mul16u: { .label res = $19 .label return = $19 .label b = $17 - //SEG367 [181] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG363 [177] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -11831,34 +11711,34 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG368 [182] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] - //SEG369 [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG370 [182] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG364 [178] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG365 [178] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG366 [178] 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 - //SEG371 [182] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy - //SEG372 mul16u::@1 + //SEG367 [178] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG368 mul16u::@1 b1: - //SEG373 [183] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG369 [179] 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 - //SEG374 mul16u::@return - //SEG375 [184] return + //SEG370 mul16u::@return + //SEG371 [180] return rts - //SEG376 mul16u::@2 + //SEG372 mul16u::@2 b2: - //SEG377 [185] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG373 [181] (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 - //SEG378 [186] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 + //SEG374 [182] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 - //SEG379 mul16u::@7 - //SEG380 [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG375 mul16u::@7 + //SEG376 [183] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -11872,26 +11752,26 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG381 [188] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] - //SEG382 [188] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy - //SEG383 mul16u::@4 + //SEG377 [184] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG378 [184] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG379 mul16u::@4 b4: - //SEG384 [189] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG380 [185] (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 - //SEG385 [190] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG381 [186] (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 - //SEG386 [182] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] - //SEG387 [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG388 [182] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG389 [182] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG382 [178] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG383 [178] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG384 [178] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG385 [178] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG390 muls16s +//SEG386 muls16s // Slow multiplication of signed words // Perform a signed multiplication by repeated addition/subtraction // muls16s(signed word zeropage(3) a, signed word zeropage(5) b) @@ -11902,34 +11782,34 @@ muls16s: { .label i = 9 .label a = 3 .label b = 5 - //SEG391 [191] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 -- vwsz1_lt_0_then_la1 + //SEG387 [187] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 -- vwsz1_lt_0_then_la1 lda a+1 bmi b6 - //SEG392 muls16s::@6 - //SEG393 [192] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 -- vwsz1_le_0_then_la1 + //SEG388 muls16s::@6 + //SEG389 [188] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 -- vwsz1_le_0_then_la1 bmi b2 bne !+ lda a beq b2 !: - //SEG394 [193] phi from muls16s::@6 to muls16s::@3 [phi:muls16s::@6->muls16s::@3] - //SEG395 [193] phi (signed word) muls16s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#0] -- vwsz1=vbuc1 + //SEG390 [189] phi from muls16s::@6 to muls16s::@3 [phi:muls16s::@6->muls16s::@3] + //SEG391 [189] phi (signed word) muls16s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#0] -- vwsz1=vbuc1 lda #<0 sta j sta j+1 - //SEG396 [193] phi (signed dword) muls16s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#1] -- vdsz1=vbuc1 + //SEG392 [189] phi (signed dword) muls16s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#1] -- vdsz1=vbuc1 sta m sta m+1 lda #<0>>$10 sta m+2 lda #>0>>$10 sta m+3 - //SEG397 [193] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] - //SEG398 [193] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy - //SEG399 [193] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy - //SEG400 muls16s::@3 + //SEG393 [189] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] + //SEG394 [189] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy + //SEG395 [189] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy + //SEG396 muls16s::@3 b3: - //SEG401 [194] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 + //SEG397 [190] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -11949,24 +11829,24 @@ muls16s: { lda m+3 adc $ff sta m+3 - //SEG402 [195] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 + //SEG398 [191] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 inc j bne !+ inc j+1 !: - //SEG403 [196] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 + //SEG399 [192] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 lda j+1 cmp a+1 bne b3 lda j cmp a bne b3 - //SEG404 [197] phi from muls16s::@3 muls16s::@5 to muls16s::@4 [phi:muls16s::@3/muls16s::@5->muls16s::@4] - //SEG405 [197] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@5->muls16s::@4#0] -- register_copy + //SEG400 [193] phi from muls16s::@3 muls16s::@5 to muls16s::@4 [phi:muls16s::@3/muls16s::@5->muls16s::@4] + //SEG401 [193] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@5->muls16s::@4#0] -- register_copy jmp b4 - //SEG406 [197] phi from muls16s::@6 to muls16s::@4 [phi:muls16s::@6->muls16s::@4] + //SEG402 [193] phi from muls16s::@6 to muls16s::@4 [phi:muls16s::@6->muls16s::@4] b2: - //SEG407 [197] phi (signed dword) muls16s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@4#0] -- vdsz1=vbuc1 + //SEG403 [193] phi (signed dword) muls16s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@4#0] -- vdsz1=vbuc1 lda #<0 sta return sta return+1 @@ -11974,30 +11854,30 @@ muls16s: { sta return+2 lda #>0>>$10 sta return+3 - //SEG408 muls16s::@4 + //SEG404 muls16s::@4 b4: - //SEG409 muls16s::@return - //SEG410 [198] return + //SEG405 muls16s::@return + //SEG406 [194] return rts - //SEG411 [199] phi from muls16s to muls16s::@5 [phi:muls16s->muls16s::@5] + //SEG407 [195] phi from muls16s to muls16s::@5 [phi:muls16s->muls16s::@5] b6: - //SEG412 [199] phi (signed word) muls16s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#0] -- vwsz1=vbuc1 + //SEG408 [195] phi (signed word) muls16s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#0] -- vwsz1=vbuc1 lda #<0 sta i sta i+1 - //SEG413 [199] phi (signed dword) muls16s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#1] -- vdsz1=vbuc1 + //SEG409 [195] phi (signed dword) muls16s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#1] -- vdsz1=vbuc1 sta m sta m+1 lda #<0>>$10 sta m+2 lda #>0>>$10 sta m+3 - //SEG414 [199] phi from muls16s::@5 to muls16s::@5 [phi:muls16s::@5->muls16s::@5] - //SEG415 [199] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@5->muls16s::@5#0] -- register_copy - //SEG416 [199] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@5->muls16s::@5#1] -- register_copy - //SEG417 muls16s::@5 + //SEG410 [195] phi from muls16s::@5 to muls16s::@5 [phi:muls16s::@5->muls16s::@5] + //SEG411 [195] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@5->muls16s::@5#0] -- register_copy + //SEG412 [195] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@5->muls16s::@5#1] -- register_copy + //SEG413 muls16s::@5 b5: - //SEG418 [200] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 + //SEG414 [196] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -12017,13 +11897,13 @@ muls16s: { lda m+3 sbc $ff sta m+3 - //SEG419 [201] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 + //SEG415 [197] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 lda i bne !+ dec i+1 !: dec i - //SEG420 [202] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 -- vwsz1_neq_vwsz2_then_la1 + //SEG416 [198] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 -- vwsz1_neq_vwsz2_then_la1 lda i+1 cmp a+1 bne b5 @@ -12032,7 +11912,7 @@ muls16s: { bne b5 jmp b4 } -//SEG421 mul16u_compare +//SEG417 mul16u_compare // Perform many possible word multiplications (slow and fast) and compare the results mul16u_compare: { .label a = $15 @@ -12041,49 +11921,49 @@ mul16u_compare: { .label mn = $19 .label mf = $11 .label i = 2 - //SEG422 [204] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] - //SEG423 [204] phi (byte) mul16u_compare::i#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 + //SEG418 [200] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] + //SEG419 [200] phi (byte) mul16u_compare::i#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG424 [204] phi (word) mul16u_compare::b#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 + //SEG420 [200] phi (word) mul16u_compare::b#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 sta b sta b+1 - //SEG425 [204] phi (word) mul16u_compare::a#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 + //SEG421 [200] phi (word) mul16u_compare::a#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 sta a sta a+1 - //SEG426 [204] phi (byte*) print_char_cursor#139 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 + //SEG422 [200] phi (byte*) print_char_cursor#139 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG427 [204] phi from mul16u_compare::@10 to mul16u_compare::@1 [phi:mul16u_compare::@10->mul16u_compare::@1] - //SEG428 [204] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@10->mul16u_compare::@1#0] -- register_copy - //SEG429 [204] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@10->mul16u_compare::@1#1] -- register_copy - //SEG430 [204] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@10->mul16u_compare::@1#2] -- register_copy - //SEG431 [204] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@10->mul16u_compare::@1#3] -- register_copy - //SEG432 mul16u_compare::@1 + //SEG423 [200] phi from mul16u_compare::@10 to mul16u_compare::@1 [phi:mul16u_compare::@10->mul16u_compare::@1] + //SEG424 [200] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@10->mul16u_compare::@1#0] -- register_copy + //SEG425 [200] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@10->mul16u_compare::@1#1] -- register_copy + //SEG426 [200] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@10->mul16u_compare::@1#2] -- register_copy + //SEG427 [200] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@10->mul16u_compare::@1#3] -- register_copy + //SEG428 mul16u_compare::@1 b1: - //SEG433 [205] call print_str - //SEG434 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] - //SEG435 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy - //SEG436 [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 + //SEG429 [201] call print_str + //SEG430 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] + //SEG431 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy + //SEG432 [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG437 [206] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] - //SEG438 [206] phi (byte) mul16u_compare::j#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuyy=vbuc1 + //SEG433 [202] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] + //SEG434 [202] phi (byte) mul16u_compare::j#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG439 [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy - //SEG440 [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy - //SEG441 [206] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] - //SEG442 [206] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy - //SEG443 [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy - //SEG444 [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy - //SEG445 mul16u_compare::@2 + //SEG435 [202] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy + //SEG436 [202] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy + //SEG437 [202] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] + //SEG438 [202] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy + //SEG439 [202] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy + //SEG440 [202] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy + //SEG441 mul16u_compare::@2 b2: - //SEG446 [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 -- vwuz1=vwuz1_plus_vwuc1 + //SEG442 [203] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 -- vwuz1=vwuz1_plus_vwuc1 clc lda a adc #<$d2b @@ -12091,7 +11971,7 @@ mul16u_compare: { lda a+1 adc #>$d2b sta a+1 - //SEG447 [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 -- vwuz1=vwuz1_plus_vwuc1 + //SEG443 [204] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 -- vwuz1=vwuz1_plus_vwuc1 clc lda b adc #<$ffd @@ -12099,38 +11979,38 @@ mul16u_compare: { lda b+1 adc #>$ffd sta b+1 - //SEG448 [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 - //SEG449 [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 - //SEG450 [211] call muls16u + //SEG444 [205] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 + //SEG445 [206] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 + //SEG446 [207] call muls16u jsr muls16u - //SEG451 [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 - //SEG452 mul16u_compare::@13 - //SEG453 [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 - //SEG454 [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG447 [208] (dword) muls16u::return#2 ← (dword) muls16u::return#0 + //SEG448 mul16u_compare::@13 + //SEG449 [209] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 + //SEG450 [210] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG455 [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 - //SEG456 [216] call mul16u - //SEG457 [180] phi from mul16u_compare::@13 to mul16u [phi:mul16u_compare::@13->mul16u] - //SEG458 [180] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@13->mul16u#0] -- register_copy - //SEG459 [180] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mul16u_compare::@13->mul16u#1] -- register_copy + //SEG451 [211] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 + //SEG452 [212] call mul16u + //SEG453 [176] phi from mul16u_compare::@13 to mul16u [phi:mul16u_compare::@13->mul16u] + //SEG454 [176] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@13->mul16u#0] -- register_copy + //SEG455 [176] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mul16u_compare::@13->mul16u#1] -- register_copy jsr mul16u - //SEG460 [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 - //SEG461 mul16u_compare::@14 - //SEG462 [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 - //SEG463 [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 - //SEG464 [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 - //SEG465 [221] call mulf16u - //SEG466 [155] phi from mul16u_compare::@14 to mulf16u [phi:mul16u_compare::@14->mulf16u] - //SEG467 [155] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@14->mulf16u#0] -- register_copy - //SEG468 [155] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@14->mulf16u#1] -- register_copy + //SEG456 [213] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG457 mul16u_compare::@14 + //SEG458 [214] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 + //SEG459 [215] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 + //SEG460 [216] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 + //SEG461 [217] call mulf16u + //SEG462 [153] phi from mul16u_compare::@14 to mulf16u [phi:mul16u_compare::@14->mulf16u] + //SEG463 [153] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@14->mulf16u#0] -- register_copy + //SEG464 [153] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@14->mulf16u#1] -- register_copy jsr mulf16u - //SEG469 [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 - //SEG470 mul16u_compare::@15 - //SEG471 [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 - //SEG472 [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 + //SEG465 [218] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 + //SEG466 mul16u_compare::@15 + //SEG467 [219] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 + //SEG468 [220] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 lda ms cmp mf bne !+ @@ -12144,19 +12024,19 @@ mul16u_compare: { cmp mf+3 beq b6 !: - //SEG473 [225] phi from mul16u_compare::@15 to mul16u_compare::@6 [phi:mul16u_compare::@15->mul16u_compare::@6] - //SEG474 mul16u_compare::@6 - //SEG475 [226] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] - //SEG476 [226] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuxx=vbuc1 + //SEG469 [221] phi from mul16u_compare::@15 to mul16u_compare::@6 [phi:mul16u_compare::@15->mul16u_compare::@6] + //SEG470 mul16u_compare::@6 + //SEG471 [222] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] + //SEG472 [222] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG477 [226] phi from mul16u_compare::@15 to mul16u_compare::@3 [phi:mul16u_compare::@15->mul16u_compare::@3] + //SEG473 [222] phi from mul16u_compare::@15 to mul16u_compare::@3 [phi:mul16u_compare::@15->mul16u_compare::@3] b6: - //SEG478 [226] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul16u_compare::@15->mul16u_compare::@3#0] -- vbuxx=vbuc1 + //SEG474 [222] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul16u_compare::@15->mul16u_compare::@3#0] -- vbuxx=vbuc1 ldx #1 - //SEG479 mul16u_compare::@3 + //SEG475 mul16u_compare::@3 b3: - //SEG480 [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 -- vduz1_eq_vduz2_then_la1 + //SEG476 [223] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 -- vduz1_eq_vduz2_then_la1 lda ms cmp mn bne !+ @@ -12170,91 +12050,91 @@ mul16u_compare: { cmp mn+3 beq b4 !: - //SEG481 [228] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] - //SEG482 [228] phi (byte) mul16u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuxx=vbuc1 + //SEG477 [224] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] + //SEG478 [224] phi (byte) mul16u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuxx=vbuc1 ldx #0 - //SEG483 mul16u_compare::@4 + //SEG479 mul16u_compare::@4 b4: - //SEG484 [229] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5 -- vbuxx_neq_0_then_la1 + //SEG480 [225] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5 -- vbuxx_neq_0_then_la1 cpx #0 bne b5 - //SEG485 mul16u_compare::@8 - //SEG486 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG481 mul16u_compare::@8 + //SEG482 [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG487 [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG483 [227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u_error.a lda a+1 sta mul16u_error.a+1 - //SEG488 [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 - //SEG489 [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 - //SEG490 [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 - //SEG491 [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 - //SEG492 [236] call mul16u_error - //SEG493 [249] phi from mul16u_compare::@8 to mul16u_error [phi:mul16u_compare::@8->mul16u_error] + //SEG484 [228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 + //SEG485 [229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 + //SEG486 [230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 + //SEG487 [231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 + //SEG488 [232] call mul16u_error + //SEG489 [245] phi from mul16u_compare::@8 to mul16u_error [phi:mul16u_compare::@8->mul16u_error] jsr mul16u_error - //SEG494 mul16u_compare::@return + //SEG490 mul16u_compare::@return breturn: - //SEG495 [237] return + //SEG491 [233] return rts - //SEG496 mul16u_compare::@5 + //SEG492 mul16u_compare::@5 b5: - //SEG497 [238] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuyy=_inc_vbuyy + //SEG493 [234] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuyy=_inc_vbuyy iny - //SEG498 [239] if((byte) mul16u_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@2 -- vbuyy_neq_vbuc1_then_la1 + //SEG494 [235] if((byte) mul16u_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@2 -- vbuyy_neq_vbuc1_then_la1 cpy #$10 bne b2 - //SEG499 mul16u_compare::@10 - //SEG500 [240] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 + //SEG495 mul16u_compare::@10 + //SEG496 [236] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 inc i - //SEG501 [241] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG497 [237] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 beq !b1+ jmp b1 !b1: - //SEG502 [242] phi from mul16u_compare::@10 to mul16u_compare::@11 [phi:mul16u_compare::@10->mul16u_compare::@11] - //SEG503 mul16u_compare::@11 - //SEG504 [243] call print_ln - //SEG505 [59] phi from mul16u_compare::@11 to print_ln [phi:mul16u_compare::@11->print_ln] - //SEG506 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@11->print_ln#0] -- register_copy - //SEG507 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare::@11->print_ln#1] -- pbuz1=pbuc1 + //SEG498 [238] phi from mul16u_compare::@10 to mul16u_compare::@11 [phi:mul16u_compare::@10->mul16u_compare::@11] + //SEG499 mul16u_compare::@11 + //SEG500 [239] call print_ln + //SEG501 [59] phi from mul16u_compare::@11 to print_ln [phi:mul16u_compare::@11->print_ln] + //SEG502 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@11->print_ln#0] -- register_copy + //SEG503 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare::@11->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln - //SEG508 mul16u_compare::@17 - //SEG509 [244] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG504 mul16u_compare::@17 + //SEG505 [240] (byte*~) print_char_cursor#192 ← (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 - //SEG510 [245] call print_str - //SEG511 [64] phi from mul16u_compare::@17 to print_str [phi:mul16u_compare::@17->print_str] - //SEG512 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#192 [phi:mul16u_compare::@17->print_str#0] -- register_copy - //SEG513 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str1 [phi:mul16u_compare::@17->print_str#1] -- pbuz1=pbuc1 + //SEG506 [241] call print_str + //SEG507 [64] phi from mul16u_compare::@17 to print_str [phi:mul16u_compare::@17->print_str] + //SEG508 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#192 [phi:mul16u_compare::@17->print_str#0] -- register_copy + //SEG509 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str1 [phi:mul16u_compare::@17->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG514 [246] phi from mul16u_compare::@17 to mul16u_compare::@18 [phi:mul16u_compare::@17->mul16u_compare::@18] - //SEG515 mul16u_compare::@18 - //SEG516 [247] call print_ln - //SEG517 [59] phi from mul16u_compare::@18 to print_ln [phi:mul16u_compare::@18->print_ln] - //SEG518 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@18->print_ln#0] -- register_copy - //SEG519 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@18->print_ln#1] -- register_copy + //SEG510 [242] phi from mul16u_compare::@17 to mul16u_compare::@18 [phi:mul16u_compare::@17->mul16u_compare::@18] + //SEG511 mul16u_compare::@18 + //SEG512 [243] call print_ln + //SEG513 [59] phi from mul16u_compare::@18 to print_ln [phi:mul16u_compare::@18->print_ln] + //SEG514 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@18->print_ln#0] -- register_copy + //SEG515 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@18->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG520 [248] phi from mul16u_compare::@3 to mul16u_compare::@22 [phi:mul16u_compare::@3->mul16u_compare::@22] - //SEG521 mul16u_compare::@22 - //SEG522 [228] phi from mul16u_compare::@22 to mul16u_compare::@4 [phi:mul16u_compare::@22->mul16u_compare::@4] - //SEG523 [228] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@22->mul16u_compare::@4#0] -- register_copy + //SEG516 [244] phi from mul16u_compare::@3 to mul16u_compare::@22 [phi:mul16u_compare::@3->mul16u_compare::@22] + //SEG517 mul16u_compare::@22 + //SEG518 [224] phi from mul16u_compare::@22 to mul16u_compare::@4 [phi:mul16u_compare::@22->mul16u_compare::@4] + //SEG519 [224] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@22->mul16u_compare::@4#0] -- register_copy str1: .text "word multiply results match!@" } -//SEG524 mul16u_error +//SEG520 mul16u_error // mul16u_error(word zeropage(3) a, word zeropage($17) b, dword zeropage($b) ms, dword zeropage($19) mn, dword zeropage($11) mf) mul16u_error: { .label a = 3 @@ -12262,75 +12142,75 @@ mul16u_error: { .label ms = $b .label mn = $19 .label mf = $11 - //SEG525 [250] call print_str - //SEG526 [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] - //SEG527 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16u_error->print_str#0] -- register_copy - //SEG528 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str [phi:mul16u_error->print_str#1] -- pbuz1=pbuc1 + //SEG521 [246] call print_str + //SEG522 [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] + //SEG523 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16u_error->print_str#0] -- register_copy + //SEG524 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str [phi:mul16u_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG529 mul16u_error::@1 - //SEG530 [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 - //SEG531 [252] call print_word - //SEG532 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] - //SEG533 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@1->print_word#0] -- register_copy - //SEG534 [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy + //SEG525 mul16u_error::@1 + //SEG526 [247] (word) print_word::w#3 ← (word) mul16u_error::a#0 + //SEG527 [248] call print_word + //SEG528 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] + //SEG529 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@1->print_word#0] -- register_copy + //SEG530 [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy jsr print_word - //SEG535 [253] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] - //SEG536 mul16u_error::@2 - //SEG537 [254] call print_str - //SEG538 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] - //SEG539 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy - //SEG540 [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG531 [249] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] + //SEG532 mul16u_error::@2 + //SEG533 [250] call print_str + //SEG534 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] + //SEG535 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy + //SEG536 [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG541 mul16u_error::@3 - //SEG542 [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 + //SEG537 mul16u_error::@3 + //SEG538 [251] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 lda b sta print_word.w lda b+1 sta print_word.w+1 - //SEG543 [256] call print_word - //SEG544 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] - //SEG545 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@3->print_word#0] -- register_copy - //SEG546 [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy + //SEG539 [252] call print_word + //SEG540 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] + //SEG541 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@3->print_word#0] -- register_copy + //SEG542 [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy jsr print_word - //SEG547 [257] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] - //SEG548 mul16u_error::@4 - //SEG549 [258] call print_str - //SEG550 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] - //SEG551 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy - //SEG552 [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG543 [253] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] + //SEG544 mul16u_error::@4 + //SEG545 [254] call print_str + //SEG546 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] + //SEG547 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy + //SEG548 [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG553 mul16u_error::@5 - //SEG554 [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 - //SEG555 [260] call print_dword - //SEG556 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] - //SEG557 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@5->print_dword#0] -- register_copy - //SEG558 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy + //SEG549 mul16u_error::@5 + //SEG550 [255] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 + //SEG551 [256] call print_dword + //SEG552 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] + //SEG553 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@5->print_dword#0] -- register_copy + //SEG554 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy jsr print_dword - //SEG559 [261] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] - //SEG560 mul16u_error::@6 - //SEG561 [262] call print_str - //SEG562 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] - //SEG563 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy - //SEG564 [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG555 [257] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] + //SEG556 mul16u_error::@6 + //SEG557 [258] call print_str + //SEG558 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] + //SEG559 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy + //SEG560 [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str - //SEG565 mul16u_error::@7 - //SEG566 [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 + //SEG561 mul16u_error::@7 + //SEG562 [259] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 lda mn sta print_dword.dw lda mn+1 @@ -12339,24 +12219,24 @@ mul16u_error: { sta print_dword.dw+2 lda mn+3 sta print_dword.dw+3 - //SEG567 [264] call print_dword - //SEG568 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] - //SEG569 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@7->print_dword#0] -- register_copy - //SEG570 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy + //SEG563 [260] call print_dword + //SEG564 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] + //SEG565 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@7->print_dword#0] -- register_copy + //SEG566 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy jsr print_dword - //SEG571 [265] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] - //SEG572 mul16u_error::@8 - //SEG573 [266] call print_str - //SEG574 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] - //SEG575 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy - //SEG576 [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG567 [261] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] + //SEG568 mul16u_error::@8 + //SEG569 [262] call print_str + //SEG570 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] + //SEG571 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy + //SEG572 [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str - //SEG577 mul16u_error::@9 - //SEG578 [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 + //SEG573 mul16u_error::@9 + //SEG574 [263] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 lda mf sta print_dword.dw lda mf+1 @@ -12365,28 +12245,28 @@ mul16u_error: { sta print_dword.dw+2 lda mf+3 sta print_dword.dw+3 - //SEG579 [268] call print_dword - //SEG580 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] - //SEG581 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@9->print_dword#0] -- register_copy - //SEG582 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy + //SEG575 [264] call print_dword + //SEG576 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] + //SEG577 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@9->print_dword#0] -- register_copy + //SEG578 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy jsr print_dword - //SEG583 [269] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] - //SEG584 mul16u_error::@10 - //SEG585 [270] call print_ln - //SEG586 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] - //SEG587 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16u_error::@10->print_ln#0] -- register_copy - //SEG588 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 + //SEG579 [265] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] + //SEG580 mul16u_error::@10 + //SEG581 [266] call print_ln + //SEG582 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] + //SEG583 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16u_error::@10->print_ln#0] -- register_copy + //SEG584 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln - //SEG589 mul16u_error::@return - //SEG590 [271] return + //SEG585 mul16u_error::@return + //SEG586 [267] return rts str: .text "multiply mismatch @" } -//SEG591 muls16u +//SEG587 muls16u // Slow multiplication of unsigned words // Calculate an unsigned multiplication by repeated addition // muls16u(word zeropage($15) a, word zeropage($17) b) @@ -12396,28 +12276,28 @@ muls16u: { .label i = 3 .label a = $15 .label b = $17 - //SEG592 [272] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 + //SEG588 [268] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 lda a bne !+ lda a+1 beq b3 !: - //SEG593 [273] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] - //SEG594 [273] phi (word) muls16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 + //SEG589 [269] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] + //SEG590 [269] phi (word) muls16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 lda #<0 sta i sta i+1 - //SEG595 [273] phi (dword) muls16u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 + //SEG591 [269] phi (dword) muls16u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 sta m sta m+1 sta m+2 sta m+3 - //SEG596 [273] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] - //SEG597 [273] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy - //SEG598 [273] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy - //SEG599 muls16u::@2 + //SEG592 [269] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] + //SEG593 [269] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy + //SEG594 [269] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy + //SEG595 muls16u::@2 b2: - //SEG600 [274] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 + //SEG596 [270] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 lda m clc adc b @@ -12431,36 +12311,36 @@ muls16u: { lda m+3 adc #0 sta m+3 - //SEG601 [275] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 + //SEG597 [271] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG602 [276] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 + //SEG598 [272] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 lda i+1 cmp a+1 bne b2 lda i cmp a bne b2 - //SEG603 [277] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] - //SEG604 [277] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy + //SEG599 [273] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] + //SEG600 [273] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy jmp b1 - //SEG605 [277] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] + //SEG601 [273] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] b3: - //SEG606 [277] phi (dword) muls16u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 + //SEG602 [273] phi (dword) muls16u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 lda #0 sta return sta return+1 sta return+2 sta return+3 - //SEG607 muls16u::@1 + //SEG603 muls16u::@1 b1: - //SEG608 muls16u::@return - //SEG609 [278] return + //SEG604 muls16u::@return + //SEG605 [274] return rts } -//SEG610 mulf_init +//SEG606 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label sqr1_hi = 5 @@ -12470,70 +12350,70 @@ mulf_init: { .label sqr2_hi = 5 .label sqr2_lo = 3 .label dir = 2 - //SEG611 [280] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] - //SEG612 [280] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG607 [276] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG608 [276] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG613 [280] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG609 [276] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG614 [280] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG610 [276] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG615 [280] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG611 [276] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #<0 sta sqr sta sqr+1 - //SEG616 [280] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 + //SEG612 [276] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 tax - //SEG617 [280] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] - //SEG618 [280] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG619 [280] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG620 [280] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG621 [280] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG622 [280] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy - //SEG623 mulf_init::@1 + //SEG613 [276] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG614 [276] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG615 [276] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG616 [276] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG617 [276] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG618 [276] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG619 mulf_init::@1 b1: - //SEG624 [281] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG620 [277] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG625 [282] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG621 [278] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG626 [283] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 + //SEG622 [279] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 cmp #0 bne b2 - //SEG627 mulf_init::@5 - //SEG628 [284] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG623 mulf_init::@5 + //SEG624 [280] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG629 [285] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG625 [281] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG630 [286] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] - //SEG631 [286] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy - //SEG632 [286] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy - //SEG633 mulf_init::@2 + //SEG626 [282] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG627 [282] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy + //SEG628 [282] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy + //SEG629 mulf_init::@2 b2: - //SEG634 [287] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG630 [283] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG635 [288] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa + //SEG631 [284] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG636 [289] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG632 [285] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG637 [290] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa + //SEG633 [286] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa sta (sqr1_hi),y - //SEG638 [291] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG634 [287] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG639 [292] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG635 [288] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -12541,127 +12421,127 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG640 [293] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG636 [289] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG641 [294] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG637 [290] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1 lda sqr1_lo cmp #mulf_init::@3] - //SEG643 [295] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 + //SEG638 [291] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] + //SEG639 [291] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG644 [295] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 + //SEG640 [291] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG645 [295] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 + //SEG641 [291] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG646 [295] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 + //SEG642 [291] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 ldx #-1 - //SEG647 [295] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] - //SEG648 [295] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy - //SEG649 [295] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy - //SEG650 [295] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy - //SEG651 [295] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy - //SEG652 mulf_init::@3 + //SEG643 [291] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG644 [291] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG645 [291] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG646 [291] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG647 [291] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG648 mulf_init::@3 b3: - //SEG653 [296] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG649 [292] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG654 [297] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG650 [293] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_hi,x sta (sqr2_hi),y - //SEG655 [298] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG651 [294] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG656 [299] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG652 [295] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - //SEG657 [300] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 + //SEG653 [296] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 cpx #0 bne b4 - //SEG658 [301] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] - //SEG659 [301] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG654 [297] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG655 [297] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 lda #1 sta dir - //SEG660 mulf_init::@4 + //SEG656 mulf_init::@4 b4: - //SEG661 [302] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG657 [298] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG662 [303] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 + //SEG658 [299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b3 lda sqr2_lo cmp #mulf_init::@12] - //SEG669 mulf_init::@12 - //SEG670 [301] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] - //SEG671 [301] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG664 [303] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] + //SEG665 mulf_init::@12 + //SEG666 [297] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG667 [297] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy } -//SEG672 print_cls +//SEG668 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 3 - //SEG673 [309] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG674 [309] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG669 [305] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG670 [305] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - //SEG675 [309] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG676 [309] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG677 print_cls::@1 + //SEG671 [305] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG672 [305] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG673 print_cls::@1 b1: - //SEG678 [310] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG674 [306] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG679 [311] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG675 [307] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG680 [312] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG676 [308] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 lda sc cmp #<$400+$3e8 bne b1 - //SEG681 print_cls::@return - //SEG682 [313] return + //SEG677 print_cls::@return + //SEG678 [309] return rts } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/test-multiply-16bit.sym b/src/test/ref/test-multiply-16bit.sym index 3cae61476..284ac3fd9 100644 --- a/src/test/ref/test-multiply-16bit.sym +++ b/src/test/ref/test-multiply-16bit.sym @@ -9,11 +9,9 @@ (label) main::@3 (label) main::@return (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) -(word~) mul16s::$11 $11 zp ZP_WORD:3 20.0 (word~) mul16s::$12 $12 zp ZP_WORD:9 4.0 (word~) mul16s::$16 $16 zp ZP_WORD:9 4.0 (word~) mul16s::$17 $17 zp ZP_WORD:9 4.0 -(word~) mul16s::$5 $5 zp ZP_WORD:3 20.0 (word~) mul16s::$6 $6 zp ZP_WORD:9 4.0 (label) mul16s::@1 (label) mul16s::@2 @@ -22,15 +20,15 @@ (label) mul16s::@6 (label) mul16s::@return (signed word) mul16s::a -(signed word) mul16s::a#0 a zp ZP_WORD:3 6.4375 +(signed word) mul16s::a#0 a zp ZP_WORD:3 7.357142857142858 (signed word) mul16s::b -(signed word) mul16s::b#0 b zp ZP_WORD:5 8.583333333333332 +(signed word) mul16s::b#0 b zp ZP_WORD:5 9.363636363636363 (dword) mul16s::m (dword) mul16s::m#0 m zp ZP_DWORD:25 2.0 (dword) mul16s::m#1 m zp ZP_DWORD:25 4.0 (dword) mul16s::m#2 m zp ZP_DWORD:25 4.0 (dword) mul16s::m#4 m zp ZP_DWORD:25 6.0 -(dword) mul16s::m#5 m zp ZP_DWORD:25 2.4 +(dword) mul16s::m#5 m zp ZP_DWORD:25 2.5 (signed dword) mul16s::return (signed dword) mul16s::return#0 return zp ZP_DWORD:25 34.33333333333333 (signed dword) mul16s::return#2 return zp ZP_DWORD:25 202.0 @@ -191,11 +189,9 @@ (dword) mul16u_error::ms#0 ms zp ZP_DWORD:11 0.3076923076923077 (const string) mul16u_error::str str = (string) "multiply mismatch @" (signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b) -(word~) mulf16s::$11 $11 zp ZP_WORD:3 20.0 (word~) mulf16s::$12 $12 zp ZP_WORD:9 4.0 (word~) mulf16s::$16 $16 zp ZP_WORD:9 4.0 (word~) mulf16s::$17 $17 zp ZP_WORD:9 4.0 -(word~) mulf16s::$5 $5 zp ZP_WORD:3 20.0 (word~) mulf16s::$6 $6 zp ZP_WORD:9 4.0 (label) mulf16s::@1 (label) mulf16s::@2 @@ -204,15 +200,15 @@ (label) mulf16s::@6 (label) mulf16s::@return (signed word) mulf16s::a -(signed word) mulf16s::a#0 a zp ZP_WORD:3 6.4375 +(signed word) mulf16s::a#0 a zp ZP_WORD:3 7.357142857142858 (signed word) mulf16s::b -(signed word) mulf16s::b#0 b zp ZP_WORD:5 8.583333333333332 +(signed word) mulf16s::b#0 b zp ZP_WORD:5 9.363636363636363 (dword) mulf16s::m (dword) mulf16s::m#0 m zp ZP_DWORD:17 2.0 (dword) mulf16s::m#1 m zp ZP_DWORD:17 4.0 (dword) mulf16s::m#2 m zp ZP_DWORD:17 4.0 (dword) mulf16s::m#4 m zp ZP_DWORD:17 6.0 -(dword) mulf16s::m#5 m zp ZP_DWORD:17 2.4 +(dword) mulf16s::m#5 m zp ZP_DWORD:17 2.5 (signed dword) mulf16s::return (signed dword) mulf16s::return#0 return zp ZP_DWORD:17 34.33333333333333 (signed dword) mulf16s::return#2 return zp ZP_DWORD:17 202.0 @@ -432,7 +428,7 @@ (const string) str4 str4 = (string) " / fast:@" zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 mul16u_compare::i#12 mul16u_compare::i#1 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#3 ] -zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 mulf16s::$5 mulf16s::$11 mul16s::$5 mul16s::$11 ] +zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ] zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 muls16s::b#0 mul16s::b#0 mulf16s::b#0 mul16s_error::b#0 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ] reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] diff --git a/src/test/ref/test-multiply-8bit.cfg b/src/test/ref/test-multiply-8bit.cfg index 11f3645c0..4db8458ad 100644 --- a/src/test/ref/test-multiply-8bit.cfg +++ b/src/test/ref/test-multiply-8bit.cfg @@ -274,413 +274,409 @@ mul8s::@6: scope:[mul8s] from mul8s [136] if((signed byte) mul8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@1 to:mul8s::@3 mul8s::@3: scope:[mul8s] from mul8s::@6 - [137] (byte~) mul8s::$5 ← > (word) mul8s::m#0 - [138] (byte~) mul8s::$6 ← > (word) mul8s::m#0 - [139] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 - [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 + [137] (byte~) mul8s::$6 ← > (word) mul8s::m#0 + [138] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 + [139] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 to:mul8s::@1 mul8s::@1: scope:[mul8s] from mul8s::@3 mul8s::@6 - [141] (word) mul8s::m#5 ← phi( mul8s::@3/(word) mul8s::m#1 mul8s::@6/(word) mul8s::m#0 ) - [142] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 + [140] (word) mul8s::m#5 ← phi( mul8s::@3/(word) mul8s::m#1 mul8s::@6/(word) mul8s::m#0 ) + [141] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 to:mul8s::@4 mul8s::@4: scope:[mul8s] from mul8s::@1 - [143] (byte~) mul8s::$11 ← > (word) mul8s::m#5 - [144] (byte~) mul8s::$12 ← > (word) mul8s::m#5 - [145] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 - [146] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 + [142] (byte~) mul8s::$12 ← > (word) mul8s::m#5 + [143] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 + [144] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 to:mul8s::@2 mul8s::@2: scope:[mul8s] from mul8s::@1 mul8s::@4 - [147] (word) mul8s::m#4 ← phi( mul8s::@1/(word) mul8s::m#5 mul8s::@4/(word) mul8s::m#2 ) + [145] (word) mul8s::m#4 ← phi( mul8s::@1/(word) mul8s::m#5 mul8s::@4/(word) mul8s::m#2 ) to:mul8s::@return mul8s::@return: scope:[mul8s] from mul8s::@2 - [148] return + [146] return to:@return mul8u: scope:[mul8u] from mul8s mul8u_compare::@13 - [149] (byte) mul8u::a#6 ← phi( mul8s/(byte~) mul8u::a#8 mul8u_compare::@13/(byte) mul8u::a#2 ) - [149] (byte) mul8u::b#2 ← phi( mul8s/(byte~) mul8u::b#3 mul8u_compare::@13/(byte) mul8u::b#1 ) - [150] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 + [147] (byte) mul8u::a#6 ← phi( mul8s/(byte~) mul8u::a#8 mul8u_compare::@13/(byte) mul8u::a#2 ) + [147] (byte) mul8u::b#2 ← phi( mul8s/(byte~) mul8u::b#3 mul8u_compare::@13/(byte) mul8u::b#1 ) + [148] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 to:mul8u::@1 mul8u::@1: scope:[mul8u] from mul8u mul8u::@4 - [151] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 ) - [151] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 ) - [151] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 ) - [152] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 + [149] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 ) + [149] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 ) + [149] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 ) + [150] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 to:mul8u::@return mul8u::@return: scope:[mul8u] from mul8u::@1 - [153] return + [151] return to:@return mul8u::@2: scope:[mul8u] from mul8u::@1 - [154] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [155] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 + [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [153] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 to:mul8u::@7 mul8u::@7: scope:[mul8u] from mul8u::@2 - [156] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 + [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 to:mul8u::@4 mul8u::@4: scope:[mul8u] from mul8u::@2 mul8u::@7 - [157] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 ) - [158] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [159] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [155] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 ) + [156] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [157] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:mul8u::@1 mulf8s: scope:[mulf8s] from mul8s_compare::@12 - [160] phi() + [158] phi() to:mulf8s::mulf8s_prepare1 mulf8s::mulf8s_prepare1: scope:[mulf8s] from mulf8s - [161] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 - [162] call mulf8u_prepare + [159] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 + [160] call mulf8u_prepare to:mulf8s::@2 mulf8s::@2: scope:[mulf8s] from mulf8s::mulf8s_prepare1 - [163] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 - [164] call mulf8s_prepared - [165] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 + [161] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 + [162] call mulf8s_prepared + [163] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 to:mulf8s::@4 mulf8s::@4: scope:[mulf8s] from mulf8s::@2 - [166] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 + [164] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 to:mulf8s::@return mulf8s::@return: scope:[mulf8s] from mulf8s::@4 - [167] return + [165] return to:@return mulf8s_prepared: scope:[mulf8s_prepared] from mulf8s::@2 - [168] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 - [169] call mulf8u_prepared - [170] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 + [166] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 + [167] call mulf8u_prepared + [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 to:mulf8s_prepared::@6 mulf8s_prepared::@6: scope:[mulf8s_prepared] from mulf8s_prepared - [171] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 - [172] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 + [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 + [170] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 to:mulf8s_prepared::@3 mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@6 - [173] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 - [174] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 - [175] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 - [176] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 + [171] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 + [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 + [173] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 to:mulf8s_prepared::@1 mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_prepared::@6 - [177] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 ) - [178] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 + [174] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 ) + [175] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 to:mulf8s_prepared::@4 mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1 - [179] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 - [180] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 - [181] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) - [182] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 + [176] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 + [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) + [178] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 to:mulf8s_prepared::@2 mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_prepared::@4 - [183] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) + [179] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) to:mulf8s_prepared::@return mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2 - [184] return + [180] return to:@return mulf8u_prepared: scope:[mulf8u_prepared] from mulf8s_prepared mulf8u::@2 - [185] (byte) mulf8u_prepared::b#2 ← phi( mulf8s_prepared/(byte~) mulf8u_prepared::b#3 mulf8u::@2/(byte) mulf8u_prepared::b#0 ) - [186] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 + [181] (byte) mulf8u_prepared::b#2 ← phi( mulf8s_prepared/(byte~) mulf8u_prepared::b#3 mulf8u::@2/(byte) mulf8u_prepared::b#0 ) + [182] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } - [188] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) + [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) to:mulf8u_prepared::@return mulf8u_prepared::@return: scope:[mulf8u_prepared] from mulf8u_prepared - [189] return + [185] return to:@return mulf8u_prepare: scope:[mulf8u_prepare] from mulf8s::mulf8s_prepare1 mulf8u - [190] (byte) mulf8u_prepare::a#2 ← phi( mulf8s::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 mulf8u/(byte) mulf8u_prepare::a#0 ) - [191] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 + [186] (byte) mulf8u_prepare::a#2 ← phi( mulf8s::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 mulf8u/(byte) mulf8u_prepare::a#0 ) + [187] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } to:mulf8u_prepare::@return mulf8u_prepare::@return: scope:[mulf8u_prepare] from mulf8u_prepare - [193] return + [189] return to:@return muls8s: scope:[muls8s] from mul8s_compare::@2 - [194] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 + [190] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 to:muls8s::@6 muls8s::@6: scope:[muls8s] from muls8s - [195] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 + [191] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 to:muls8s::@3 muls8s::@3: scope:[muls8s] from muls8s::@3 muls8s::@6 - [196] (signed byte) muls8s::j#2 ← phi( muls8s::@3/(signed byte) muls8s::j#1 muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [196] (signed word) muls8s::m#3 ← phi( muls8s::@3/(signed word) muls8s::m#1 muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [197] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 - [198] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 - [199] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 + [192] (signed byte) muls8s::j#2 ← phi( muls8s::@3/(signed byte) muls8s::j#1 muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [192] (signed word) muls8s::m#3 ← phi( muls8s::@3/(signed word) muls8s::m#1 muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [193] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 + [194] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 + [195] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 to:muls8s::@4 muls8s::@4: scope:[muls8s] from muls8s::@3 muls8s::@5 muls8s::@6 - [200] (signed word) muls8s::return#0 ← phi( muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@3/(signed word) muls8s::m#1 muls8s::@5/(signed word) muls8s::m#2 ) + [196] (signed word) muls8s::return#0 ← phi( muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@3/(signed word) muls8s::m#1 muls8s::@5/(signed word) muls8s::m#2 ) to:muls8s::@return muls8s::@return: scope:[muls8s] from muls8s::@4 - [201] return + [197] return to:@return muls8s::@5: scope:[muls8s] from muls8s muls8s::@5 - [202] (signed byte) muls8s::i#2 ← phi( muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed byte) muls8s::i#1 ) - [202] (signed word) muls8s::m#5 ← phi( muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed word) muls8s::m#2 ) - [203] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 - [204] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 - [205] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 + [198] (signed byte) muls8s::i#2 ← phi( muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed byte) muls8s::i#1 ) + [198] (signed word) muls8s::m#5 ← phi( muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed word) muls8s::m#2 ) + [199] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 + [200] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 + [201] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 to:muls8s::@4 mul8u_compare: scope:[mul8u_compare] from main::@4 - [206] phi() + [202] phi() to:mul8u_compare::@1 mul8u_compare::@1: scope:[mul8u_compare] from mul8u_compare mul8u_compare::@10 - [207] (byte) mul8u_compare::a#7 ← phi( mul8u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u_compare::@10/(byte) mul8u_compare::a#1 ) + [203] (byte) mul8u_compare::a#7 ← phi( mul8u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u_compare::@10/(byte) mul8u_compare::a#1 ) to:mul8u_compare::@2 mul8u_compare::@2: scope:[mul8u_compare] from mul8u_compare::@1 mul8u_compare::@5 - [208] (byte) mul8u_compare::b#10 ← phi( mul8u_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u_compare::@5/(byte) mul8u_compare::b#1 ) - [209] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 - [210] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 - [211] call muls8u - [212] (word) muls8u::return#2 ← (word) muls8u::return#0 + [204] (byte) mul8u_compare::b#10 ← phi( mul8u_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u_compare::@5/(byte) mul8u_compare::b#1 ) + [205] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 + [206] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 + [207] call muls8u + [208] (word) muls8u::return#2 ← (word) muls8u::return#0 to:mul8u_compare::@12 mul8u_compare::@12: scope:[mul8u_compare] from mul8u_compare::@2 - [213] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 - [214] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 - [215] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 - [216] call mulf8u - [217] (word) mulf8u::return#2 ← (word) mulf8u::return#0 + [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 + [210] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 + [211] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 + [212] call mulf8u + [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0 to:mul8u_compare::@13 mul8u_compare::@13: scope:[mul8u_compare] from mul8u_compare::@12 - [218] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 - [219] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 - [220] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 - [221] call mul8u - [222] (word) mul8u::return#3 ← (word) mul8u::res#2 + [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 + [215] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 + [216] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 + [217] call mul8u + [218] (word) mul8u::return#3 ← (word) mul8u::res#2 to:mul8u_compare::@14 mul8u_compare::@14: scope:[mul8u_compare] from mul8u_compare::@13 - [223] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 - [224] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 + [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 + [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 to:mul8u_compare::@6 mul8u_compare::@6: scope:[mul8u_compare] from mul8u_compare::@14 - [225] phi() + [221] phi() to:mul8u_compare::@3 mul8u_compare::@3: scope:[mul8u_compare] from mul8u_compare::@14 mul8u_compare::@6 - [226] (byte) mul8u_compare::ok#4 ← phi( mul8u_compare::@14/(byte/signed byte/word/signed word/dword/signed dword) 1 mul8u_compare::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [227] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 + [222] (byte) mul8u_compare::ok#4 ← phi( mul8u_compare::@14/(byte/signed byte/word/signed word/dword/signed dword) 1 mul8u_compare::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [223] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 to:mul8u_compare::@4 mul8u_compare::@4: scope:[mul8u_compare] from mul8u_compare::@20 mul8u_compare::@3 - [228] (byte) mul8u_compare::ok#3 ← phi( mul8u_compare::@20/(byte) mul8u_compare::ok#4 mul8u_compare::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [229] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 + [224] (byte) mul8u_compare::ok#3 ← phi( mul8u_compare::@20/(byte) mul8u_compare::ok#4 mul8u_compare::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [225] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 to:mul8u_compare::@8 mul8u_compare::@8: scope:[mul8u_compare] from mul8u_compare::@4 - [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 - [231] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 - [232] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 - [233] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 - [234] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 - [235] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 - [236] call mul8u_error + [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 + [227] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 + [228] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 + [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 + [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 + [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 + [232] call mul8u_error to:mul8u_compare::@return mul8u_compare::@return: scope:[mul8u_compare] from mul8u_compare::@16 mul8u_compare::@8 - [237] return + [233] return to:@return mul8u_compare::@5: scope:[mul8u_compare] from mul8u_compare::@4 - [238] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 - [239] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 + [234] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 + [235] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 to:mul8u_compare::@10 mul8u_compare::@10: scope:[mul8u_compare] from mul8u_compare::@5 - [240] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 - [241] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 + [236] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 + [237] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 to:mul8u_compare::@11 mul8u_compare::@11: scope:[mul8u_compare] from mul8u_compare::@10 - [242] phi() - [243] call print_str + [238] phi() + [239] call print_str to:mul8u_compare::@16 mul8u_compare::@16: scope:[mul8u_compare] from mul8u_compare::@11 - [244] phi() - [245] call print_ln + [240] phi() + [241] call print_ln to:mul8u_compare::@return mul8u_compare::@20: scope:[mul8u_compare] from mul8u_compare::@3 - [246] phi() + [242] phi() to:mul8u_compare::@4 mul8u_error: scope:[mul8u_error] from mul8u_compare::@8 - [247] phi() - [248] call print_str + [243] phi() + [244] call print_str to:mul8u_error::@1 mul8u_error::@1: scope:[mul8u_error] from mul8u_error - [249] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 - [250] call print_byte + [245] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 + [246] call print_byte to:mul8u_error::@2 mul8u_error::@2: scope:[mul8u_error] from mul8u_error::@1 - [251] phi() - [252] call print_str + [247] phi() + [248] call print_str to:mul8u_error::@3 mul8u_error::@3: scope:[mul8u_error] from mul8u_error::@2 - [253] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 - [254] call print_byte + [249] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 + [250] call print_byte to:mul8u_error::@4 mul8u_error::@4: scope:[mul8u_error] from mul8u_error::@3 - [255] phi() - [256] call print_str + [251] phi() + [252] call print_str to:mul8u_error::@5 mul8u_error::@5: scope:[mul8u_error] from mul8u_error::@4 - [257] (word) print_word::w#3 ← (word) mul8u_error::ms#0 - [258] call print_word + [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0 + [254] call print_word to:mul8u_error::@6 mul8u_error::@6: scope:[mul8u_error] from mul8u_error::@5 - [259] phi() - [260] call print_str + [255] phi() + [256] call print_str to:mul8u_error::@7 mul8u_error::@7: scope:[mul8u_error] from mul8u_error::@6 - [261] (word) print_word::w#4 ← (word) mul8u_error::mn#0 - [262] call print_word + [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 + [258] call print_word to:mul8u_error::@8 mul8u_error::@8: scope:[mul8u_error] from mul8u_error::@7 - [263] phi() - [264] call print_str + [259] phi() + [260] call print_str to:mul8u_error::@9 mul8u_error::@9: scope:[mul8u_error] from mul8u_error::@8 - [265] (word) print_word::w#5 ← (word) mul8u_error::mf#0 - [266] call print_word + [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 + [262] call print_word to:mul8u_error::@10 mul8u_error::@10: scope:[mul8u_error] from mul8u_error::@9 - [267] phi() - [268] call print_ln + [263] phi() + [264] call print_ln to:mul8u_error::@return mul8u_error::@return: scope:[mul8u_error] from mul8u_error::@10 - [269] return + [265] return to:@return mulf8u: scope:[mulf8u] from mul8u_compare::@12 - [270] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 - [271] call mulf8u_prepare + [266] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 + [267] call mulf8u_prepare to:mulf8u::@2 mulf8u::@2: scope:[mulf8u] from mulf8u - [272] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 - [273] call mulf8u_prepared - [274] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 + [268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 + [269] call mulf8u_prepared + [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 to:mulf8u::@3 mulf8u::@3: scope:[mulf8u] from mulf8u::@2 - [275] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 + [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 to:mulf8u::@return mulf8u::@return: scope:[mulf8u] from mulf8u::@3 - [276] return + [272] return to:@return muls8u: scope:[muls8u] from mul8u_compare::@2 - [277] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 + [273] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 to:muls8u::@2 muls8u::@2: scope:[muls8u] from muls8u muls8u::@2 - [278] (byte) muls8u::i#2 ← phi( muls8u::@2/(byte) muls8u::i#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [278] (word) muls8u::m#3 ← phi( muls8u::@2/(word) muls8u::m#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [279] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 - [280] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 - [281] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 + [274] (byte) muls8u::i#2 ← phi( muls8u::@2/(byte) muls8u::i#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [274] (word) muls8u::m#3 ← phi( muls8u::@2/(word) muls8u::m#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [275] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 + [276] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 + [277] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 to:muls8u::@1 muls8u::@1: scope:[muls8u] from muls8u muls8u::@2 - [282] (word) muls8u::return#0 ← phi( muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8u::@2/(word) muls8u::m#1 ) + [278] (word) muls8u::return#0 ← phi( muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8u::@2/(word) muls8u::m#1 ) to:muls8u::@return muls8u::@return: scope:[muls8u] from muls8u::@1 - [283] return + [279] return to:@return mulf_tables_cmp: scope:[mulf_tables_cmp] from main::@3 - [284] phi() + [280] phi() to:mulf_tables_cmp::@1 mulf_tables_cmp::@1: scope:[mulf_tables_cmp] from mulf_tables_cmp mulf_tables_cmp::@2 - [285] (byte*) mulf_tables_cmp::asm_sqr#2 ← phi( mulf_tables_cmp/(const byte[512]) mula_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::asm_sqr#1 ) - [285] (byte*) mulf_tables_cmp::kc_sqr#2 ← phi( mulf_tables_cmp/(const byte[512]) mulf_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::kc_sqr#1 ) - [286] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 + [281] (byte*) mulf_tables_cmp::asm_sqr#2 ← phi( mulf_tables_cmp/(const byte[512]) mula_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::asm_sqr#1 ) + [281] (byte*) mulf_tables_cmp::kc_sqr#2 ← phi( mulf_tables_cmp/(const byte[512]) mulf_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::kc_sqr#1 ) + [282] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 to:mulf_tables_cmp::@3 mulf_tables_cmp::@3: scope:[mulf_tables_cmp] from mulf_tables_cmp::@1 - [287] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 - [288] call print_str + [283] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 + [284] call print_str to:mulf_tables_cmp::@6 mulf_tables_cmp::@6: scope:[mulf_tables_cmp] from mulf_tables_cmp::@3 - [289] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 - [290] call print_word + [285] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 + [286] call print_word to:mulf_tables_cmp::@7 mulf_tables_cmp::@7: scope:[mulf_tables_cmp] from mulf_tables_cmp::@6 - [291] phi() - [292] call print_str + [287] phi() + [288] call print_str to:mulf_tables_cmp::@8 mulf_tables_cmp::@8: scope:[mulf_tables_cmp] from mulf_tables_cmp::@7 - [293] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 - [294] call print_word + [289] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 + [290] call print_word to:mulf_tables_cmp::@return mulf_tables_cmp::@return: scope:[mulf_tables_cmp] from mulf_tables_cmp::@10 mulf_tables_cmp::@8 - [295] (byte*) print_line_cursor#10 ← phi( mulf_tables_cmp::@10/(byte*) print_line_cursor#1 mulf_tables_cmp::@8/((byte*))(word/signed word/dword/signed dword) 1024 ) - [295] (byte*) print_char_cursor#31 ← phi( mulf_tables_cmp::@10/(byte*~) print_char_cursor#225 mulf_tables_cmp::@8/(byte*) print_char_cursor#18 ) - [296] return + [291] (byte*) print_line_cursor#10 ← phi( mulf_tables_cmp::@10/(byte*) print_line_cursor#1 mulf_tables_cmp::@8/((byte*))(word/signed word/dword/signed dword) 1024 ) + [291] (byte*) print_char_cursor#31 ← phi( mulf_tables_cmp::@10/(byte*~) print_char_cursor#225 mulf_tables_cmp::@8/(byte*) print_char_cursor#18 ) + [292] return to:@return mulf_tables_cmp::@2: scope:[mulf_tables_cmp] from mulf_tables_cmp::@1 - [297] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 - [298] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 - [299] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 + [293] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 + [294] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 + [295] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 to:mulf_tables_cmp::@5 mulf_tables_cmp::@5: scope:[mulf_tables_cmp] from mulf_tables_cmp::@2 - [300] phi() - [301] call print_str + [296] phi() + [297] call print_str to:mulf_tables_cmp::@10 mulf_tables_cmp::@10: scope:[mulf_tables_cmp] from mulf_tables_cmp::@5 - [302] phi() - [303] call print_ln - [304] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 + [298] phi() + [299] call print_ln + [300] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 to:mulf_tables_cmp::@return mulf_init_asm: scope:[mulf_init_asm] from main::@2 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } - [306] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) - [307] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) - [308] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) - [309] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) + [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) + [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) + [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) + [305] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) to:mulf_init_asm::@return mulf_init_asm::@return: scope:[mulf_init_asm] from mulf_init_asm - [310] return + [306] return to:@return mulf_init: scope:[mulf_init] from main::@1 - [311] phi() + [307] phi() to:mulf_init::@1 mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2 - [312] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) - [312] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) - [312] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) - [312] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) - [312] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) - [313] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 - [314] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [315] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 + [308] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) + [308] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) + [308] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) + [308] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) + [308] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) + [309] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 + [310] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [311] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 to:mulf_init::@5 mulf_init::@5: scope:[mulf_init] from mulf_init::@1 - [316] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 - [317] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 + [312] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 + [313] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 to:mulf_init::@2 mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@5 - [318] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) - [318] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) - [319] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 - [320] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 - [321] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 - [322] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 - [323] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 - [324] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 - [325] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 - [326] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 + [314] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) + [314] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) + [315] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 + [316] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 + [317] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 + [318] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 + [319] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 + [320] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 + [321] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 + [322] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 to:mulf_init::@3 mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4 - [327] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) - [327] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) - [327] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) - [327] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [328] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) - [329] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) - [330] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 - [331] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 - [332] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 + [323] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) + [323] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) + [323] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) + [323] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [324] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) + [325] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) + [326] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 + [327] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 + [328] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 to:mulf_init::@4 mulf_init::@4: scope:[mulf_init] from mulf_init::@12 mulf_init::@3 - [333] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [334] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 - [335] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 + [329] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [330] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 + [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 to:mulf_init::@8 mulf_init::@8: scope:[mulf_init] from mulf_init::@4 - [336] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) - [337] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) + [332] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) + [333] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) to:mulf_init::@return mulf_init::@return: scope:[mulf_init] from mulf_init::@8 - [338] return + [334] return to:@return mulf_init::@12: scope:[mulf_init] from mulf_init::@3 - [339] phi() + [335] phi() to:mulf_init::@4 print_cls: scope:[print_cls] from main - [340] phi() + [336] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [341] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [342] *((byte*) print_cls::sc#2) ← (byte) ' ' - [343] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [344] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 + [337] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [338] *((byte*) print_cls::sc#2) ← (byte) ' ' + [339] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [340] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [345] return + [341] return to:@return diff --git a/src/test/ref/test-multiply-8bit.log b/src/test/ref/test-multiply-8bit.log index 7c5d9c27b..7524de713 100644 --- a/src/test/ref/test-multiply-8bit.log +++ b/src/test/ref/test-multiply-8bit.log @@ -302,7 +302,6 @@ mul8s::@3: scope:[mul8s] from mul8s::@6 (signed byte) mul8s::a#5 ← phi( mul8s::@6/(signed byte) mul8s::a#2 ) (signed byte) mul8s::b#3 ← phi( mul8s::@6/(signed byte) mul8s::b#4 ) (word) mul8s::m#3 ← phi( mul8s::@6/(word) mul8s::m#0 ) - (byte~) mul8s::$5 ← > (word) mul8s::m#3 (byte~) mul8s::$6 ← > (word) mul8s::m#3 (byte~) mul8s::$7 ← ((byte)) (signed byte) mul8s::b#3 (byte~) mul8s::$8 ← (byte~) mul8s::$6 - (byte~) mul8s::$7 @@ -317,7 +316,6 @@ mul8s::@2: scope:[mul8s] from mul8s::@1 mul8s::@4 mul8s::@4: scope:[mul8s] from mul8s::@1 (signed byte) mul8s::a#3 ← phi( mul8s::@1/(signed byte) mul8s::a#4 ) (word) mul8s::m#5 ← phi( mul8s::@1/(word) mul8s::m#6 ) - (byte~) mul8s::$11 ← > (word) mul8s::m#5 (byte~) mul8s::$12 ← > (word) mul8s::m#5 (byte~) mul8s::$13 ← ((byte)) (signed byte) mul8s::a#3 (byte~) mul8s::$14 ← (byte~) mul8s::$12 - (byte~) mul8s::$13 @@ -506,7 +504,6 @@ mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_pr mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@6 (signed byte) mulf8s_prepared::b#3 ← phi( mulf8s_prepared::@6/(signed byte) mulf8s_prepared::b#4 ) (word) mulf8s_prepared::m#3 ← phi( mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 ) - (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#3 (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#3 (byte~) mulf8s_prepared::$6 ← ((byte)) (signed byte) mulf8s_prepared::b#3 (byte~) mulf8s_prepared::$7 ← (byte~) mulf8s_prepared::$5 - (byte~) mulf8s_prepared::$6 @@ -520,7 +517,6 @@ mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_pr to:mulf8s_prepared::@return mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1 (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#6 ) - (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 (byte~) mulf8s_prepared::$12 ← ((byte)) *((signed byte*) mulf8s_prepared::memA#0) (byte~) mulf8s_prepared::$13 ← (byte~) mulf8s_prepared::$11 - (byte~) mulf8s_prepared::$12 @@ -1528,7 +1524,6 @@ SYMBOL TABLE SSA (byte~) mul8s::$0 (byte~) mul8s::$1 (bool~) mul8s::$10 -(byte~) mul8s::$11 (byte~) mul8s::$12 (byte~) mul8s::$13 (byte~) mul8s::$14 @@ -1538,7 +1533,6 @@ SYMBOL TABLE SSA (word~) mul8s::$2 (bool~) mul8s::$3 (bool~) mul8s::$4 -(byte~) mul8s::$5 (byte~) mul8s::$6 (byte~) mul8s::$7 (byte~) mul8s::$8 @@ -1960,7 +1954,6 @@ SYMBOL TABLE SSA (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) (byte~) mulf8s_prepared::$0 (word~) mulf8s_prepared::$1 -(byte~) mulf8s_prepared::$10 (byte~) mulf8s_prepared::$11 (byte~) mulf8s_prepared::$12 (byte~) mulf8s_prepared::$13 @@ -1969,7 +1962,6 @@ SYMBOL TABLE SSA (byte~) mulf8s_prepared::$16 (bool~) mulf8s_prepared::$2 (bool~) mulf8s_prepared::$3 -(byte~) mulf8s_prepared::$4 (byte~) mulf8s_prepared::$5 (byte~) mulf8s_prepared::$6 (byte~) mulf8s_prepared::$7 @@ -2716,19 +2708,19 @@ Inversing boolean not [28] (bool~) print_sword::$1 ← (signed word) print_sword Inversing boolean not [130] (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [129] (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not [156] (bool~) mul8s::$4 ← (signed byte) mul8s::a#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [155] (bool~) mul8s::$3 ← (signed byte) mul8s::a#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not [160] (bool~) mul8s::$10 ← (signed byte) mul8s::b#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [159] (bool~) mul8s::$9 ← (signed byte) mul8s::b#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [198] (bool~) mulf_init::$4 ← (byte~) mulf_init::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [197] (bool~) mulf_init::$3 ← (byte~) mulf_init::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [228] (bool~) mulf_init::$14 ← (byte) mulf_init::x_255#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [227] (bool~) mulf_init::$13 ← (byte) mulf_init::x_255#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [281] (bool~) mulf8s_prepared::$3 ← *((signed byte*) mulf8s_prepared::memA#0) >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [280] (bool~) mulf8s_prepared::$2 ← *((signed byte*) mulf8s_prepared::memA#0) < (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [285] (bool~) mulf8s_prepared::$9 ← (signed byte) mulf8s_prepared::b#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [284] (bool~) mulf8s_prepared::$8 ← (signed byte) mulf8s_prepared::b#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [355] (bool~) muls8u::$1 ← (byte) muls8u::a#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [354] (bool~) muls8u::$0 ← (byte) muls8u::a#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [378] (bool~) muls8s::$2 ← (signed byte) muls8s::a#2 <= (byte/signed byte/word/signed word/dword/signed dword) 0 from [377] (bool~) muls8s::$1 ← (signed byte) muls8s::a#2 > (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [417] (bool~) mulf_tables_cmp::$1 ← *((byte*) mulf_tables_cmp::kc_sqr#2) == *((byte*) mulf_tables_cmp::asm_sqr#2) from [416] (bool~) mulf_tables_cmp::$0 ← *((byte*) mulf_tables_cmp::kc_sqr#2) != *((byte*) mulf_tables_cmp::asm_sqr#2) -Inversing boolean not [487] (bool~) mul8u_compare::$4 ← (word) mul8u_compare::ms#1 == (word) mul8u_compare::mf#1 from [486] (bool~) mul8u_compare::$3 ← (word) mul8u_compare::ms#1 != (word) mul8u_compare::mf#1 -Inversing boolean not [491] (bool~) mul8u_compare::$6 ← (word) mul8u_compare::ms#2 == (word) mul8u_compare::mn#1 from [490] (bool~) mul8u_compare::$5 ← (word) mul8u_compare::ms#2 != (word) mul8u_compare::mn#1 -Inversing boolean not [497] (bool~) mul8u_compare::$8 ← (byte) mul8u_compare::ok#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [496] (bool~) mul8u_compare::$7 ← (byte) mul8u_compare::ok#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 -Inversing boolean not [612] (bool~) mul8s_compare::$6 ← (signed word) mul8s_compare::ms#1 == (signed word) mul8s_compare::mf#1 from [611] (bool~) mul8s_compare::$5 ← (signed word) mul8s_compare::ms#1 != (signed word) mul8s_compare::mf#1 -Inversing boolean not [616] (bool~) mul8s_compare::$8 ← (signed word) mul8s_compare::ms#2 == (signed word) mul8s_compare::mn#1 from [615] (bool~) mul8s_compare::$7 ← (signed word) mul8s_compare::ms#2 != (signed word) mul8s_compare::mn#1 -Inversing boolean not [622] (bool~) mul8s_compare::$10 ← (byte) mul8s_compare::ok#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [621] (bool~) mul8s_compare::$9 ← (byte) mul8s_compare::ok#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [196] (bool~) mulf_init::$4 ← (byte~) mulf_init::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [195] (bool~) mulf_init::$3 ← (byte~) mulf_init::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [226] (bool~) mulf_init::$14 ← (byte) mulf_init::x_255#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [225] (bool~) mulf_init::$13 ← (byte) mulf_init::x_255#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [279] (bool~) mulf8s_prepared::$3 ← *((signed byte*) mulf8s_prepared::memA#0) >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [278] (bool~) mulf8s_prepared::$2 ← *((signed byte*) mulf8s_prepared::memA#0) < (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [283] (bool~) mulf8s_prepared::$9 ← (signed byte) mulf8s_prepared::b#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [282] (bool~) mulf8s_prepared::$8 ← (signed byte) mulf8s_prepared::b#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [351] (bool~) muls8u::$1 ← (byte) muls8u::a#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [350] (bool~) muls8u::$0 ← (byte) muls8u::a#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [374] (bool~) muls8s::$2 ← (signed byte) muls8s::a#2 <= (byte/signed byte/word/signed word/dword/signed dword) 0 from [373] (bool~) muls8s::$1 ← (signed byte) muls8s::a#2 > (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [413] (bool~) mulf_tables_cmp::$1 ← *((byte*) mulf_tables_cmp::kc_sqr#2) == *((byte*) mulf_tables_cmp::asm_sqr#2) from [412] (bool~) mulf_tables_cmp::$0 ← *((byte*) mulf_tables_cmp::kc_sqr#2) != *((byte*) mulf_tables_cmp::asm_sqr#2) +Inversing boolean not [483] (bool~) mul8u_compare::$4 ← (word) mul8u_compare::ms#1 == (word) mul8u_compare::mf#1 from [482] (bool~) mul8u_compare::$3 ← (word) mul8u_compare::ms#1 != (word) mul8u_compare::mf#1 +Inversing boolean not [487] (bool~) mul8u_compare::$6 ← (word) mul8u_compare::ms#2 == (word) mul8u_compare::mn#1 from [486] (bool~) mul8u_compare::$5 ← (word) mul8u_compare::ms#2 != (word) mul8u_compare::mn#1 +Inversing boolean not [493] (bool~) mul8u_compare::$8 ← (byte) mul8u_compare::ok#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [492] (bool~) mul8u_compare::$7 ← (byte) mul8u_compare::ok#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not [608] (bool~) mul8s_compare::$6 ← (signed word) mul8s_compare::ms#1 == (signed word) mul8s_compare::mf#1 from [607] (bool~) mul8s_compare::$5 ← (signed word) mul8s_compare::ms#1 != (signed word) mul8s_compare::mf#1 +Inversing boolean not [612] (bool~) mul8s_compare::$8 ← (signed word) mul8s_compare::ms#2 == (signed word) mul8s_compare::mn#1 from [611] (bool~) mul8s_compare::$7 ← (signed word) mul8s_compare::ms#2 != (signed word) mul8s_compare::mn#1 +Inversing boolean not [618] (bool~) mul8s_compare::$10 ← (byte) mul8s_compare::ok#3 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [617] (bool~) mul8s_compare::$9 ← (byte) mul8s_compare::ok#3 == (byte/signed byte/word/signed word/dword/signed dword) 0 Successful SSA optimization Pass2UnaryNotSimplification Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#89 (byte*) print_char_cursor#176 (byte*) print_screen#9 (byte*) print_line_cursor#78 (byte*) print_char_cursor#171 (byte*) print_screen#8 (byte*) print_line_cursor#67 (byte*) print_char_cursor#163 (byte*) print_screen#7 (byte*) print_line_cursor#66 (byte*) print_char_cursor#162 (byte*) print_screen#6 (byte*) print_line_cursor#56 (byte*) print_char_cursor#151 (byte*) print_screen#5 Alias (byte*) print_str::str#16 = (byte*) print_str::str#17 @@ -3133,30 +3125,30 @@ Simple Condition (bool~) mul8u::$0 [126] if((byte) mul8u::a#3!=(byte/signed byte Simple Condition (bool~) mul8u::$3 [131] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 Simple Condition (bool~) mul8s::$4 [157] if((signed byte) mul8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@1 Simple Condition (bool~) mul8s::$10 [161] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 -Simple Condition (bool~) mulf_init::$4 [199] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -Simple Condition (bool~) mulf_init::$9 [211] if((byte*) mulf_init::sqr1_lo#1!=(byte*~) mulf_init::$8) goto mulf_init::@1 -Simple Condition (bool~) mulf_init::$14 [229] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@4 -Simple Condition (bool~) mulf_init::$16 [234] if((byte*) mulf_init::sqr2_lo#1!=(byte*~) mulf_init::$15) goto mulf_init::@3 -Simple Condition (bool~) mulf8s_prepared::$3 [282] if(*((signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 -Simple Condition (bool~) mulf8s_prepared::$9 [286] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -Simple Condition (bool~) muls8u::$1 [356] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 -Simple Condition (bool~) muls8u::$3 [366] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -Simple Condition (bool~) muls8s::$0 [373] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@1 -Simple Condition (bool~) muls8s::$2 [379] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@2 -Simple Condition (bool~) muls8s::$4 [388] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -Simple Condition (bool~) muls8s::$6 [396] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 -Simple Condition (bool~) mulf_tables_cmp::$1 [418] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -Simple Condition (bool~) mulf_tables_cmp::$10 [425] if((byte*) mulf_tables_cmp::kc_sqr#1<(byte*~) mulf_tables_cmp::$9) goto mulf_tables_cmp::@1 -Simple Condition (bool~) mul8u_compare::$4 [488] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -Simple Condition (bool~) mul8u_compare::$6 [492] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@4 -Simple Condition (bool~) mul8u_compare::$8 [498] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 -Simple Condition (bool~) mul8u_compare::$10 [504] if((byte) mul8u_compare::b#1!=rangelast(0,255)) goto mul8u_compare::@2 -Simple Condition (bool~) mul8u_compare::$11 [523] if((byte) mul8u_compare::a#1!=rangelast(0,255)) goto mul8u_compare::@1 -Simple Condition (bool~) mul8s_compare::$6 [613] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@3 -Simple Condition (bool~) mul8s_compare::$8 [617] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@4 -Simple Condition (bool~) mul8s_compare::$10 [623] if((byte) mul8s_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s_compare::@5 -Simple Condition (bool~) mul8s_compare::$13 [630] if((signed byte) mul8s_compare::b#1!=(signed byte/signed word/signed dword~) mul8s_compare::$12) goto mul8s_compare::@2 -Simple Condition (bool~) mul8s_compare::$15 [650] if((signed byte) mul8s_compare::a#1!=(signed byte/signed word/signed dword~) mul8s_compare::$14) goto mul8s_compare::@1 +Simple Condition (bool~) mulf_init::$4 [197] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 +Simple Condition (bool~) mulf_init::$9 [209] if((byte*) mulf_init::sqr1_lo#1!=(byte*~) mulf_init::$8) goto mulf_init::@1 +Simple Condition (bool~) mulf_init::$14 [227] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@4 +Simple Condition (bool~) mulf_init::$16 [232] if((byte*) mulf_init::sqr2_lo#1!=(byte*~) mulf_init::$15) goto mulf_init::@3 +Simple Condition (bool~) mulf8s_prepared::$3 [280] if(*((signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 +Simple Condition (bool~) mulf8s_prepared::$9 [284] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 +Simple Condition (bool~) muls8u::$1 [352] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 +Simple Condition (bool~) muls8u::$3 [362] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 +Simple Condition (bool~) muls8s::$0 [369] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@1 +Simple Condition (bool~) muls8s::$2 [375] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@2 +Simple Condition (bool~) muls8s::$4 [384] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 +Simple Condition (bool~) muls8s::$6 [392] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 +Simple Condition (bool~) mulf_tables_cmp::$1 [414] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 +Simple Condition (bool~) mulf_tables_cmp::$10 [421] if((byte*) mulf_tables_cmp::kc_sqr#1<(byte*~) mulf_tables_cmp::$9) goto mulf_tables_cmp::@1 +Simple Condition (bool~) mul8u_compare::$4 [484] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 +Simple Condition (bool~) mul8u_compare::$6 [488] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@4 +Simple Condition (bool~) mul8u_compare::$8 [494] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 +Simple Condition (bool~) mul8u_compare::$10 [500] if((byte) mul8u_compare::b#1!=rangelast(0,255)) goto mul8u_compare::@2 +Simple Condition (bool~) mul8u_compare::$11 [519] if((byte) mul8u_compare::a#1!=rangelast(0,255)) goto mul8u_compare::@1 +Simple Condition (bool~) mul8s_compare::$6 [609] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mf#0) goto mul8s_compare::@3 +Simple Condition (bool~) mul8s_compare::$8 [613] if((signed word) mul8s_compare::ms#0==(signed word) mul8s_compare::mn#0) goto mul8s_compare::@4 +Simple Condition (bool~) mul8s_compare::$10 [619] if((byte) mul8s_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s_compare::@5 +Simple Condition (bool~) mul8s_compare::$13 [626] if((signed byte) mul8s_compare::b#1!=(signed byte/signed word/signed dword~) mul8s_compare::$12) goto mul8s_compare::@2 +Simple Condition (bool~) mul8s_compare::$15 [646] if((signed byte) mul8s_compare::a#1!=(signed byte/signed word/signed dword~) mul8s_compare::$14) goto mul8s_compare::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) print_line_cursor#0 = ((byte*))1024 Constant (const byte) print_char::ch#0 = '-' @@ -3475,12 +3467,12 @@ Calls in [print_word] to print_byte:127 print_byte:131 Calls in [print_byte] to print_char:138 print_char:143 Calls in [print_sbyte] to print_char:152 print_byte:157 print_char:160 Calls in [mul8s] to mul8u:165 -Calls in [mulf8s] to mulf8u_prepare:205 mulf8s_prepared:207 -Calls in [mulf8s_prepared] to mulf8u_prepared:212 -Calls in [mul8u_compare] to muls8u:264 mulf8u:269 mul8u:276 mul8u_error:292 print_str:299 print_ln:302 -Calls in [mul8u_error] to print_str:307 print_byte:311 print_str:313 print_byte:317 print_str:319 print_word:323 print_str:325 print_word:329 print_str:331 print_word:335 print_ln:338 -Calls in [mulf8u] to mulf8u_prepare:342 mulf8u_prepared:345 -Calls in [mulf_tables_cmp] to print_str:363 print_word:366 print_str:368 print_word:371 print_str:379 print_ln:381 +Calls in [mulf8s] to mulf8u_prepare:203 mulf8s_prepared:205 +Calls in [mulf8s_prepared] to mulf8u_prepared:210 +Calls in [mul8u_compare] to muls8u:260 mulf8u:265 mul8u:272 mul8u_error:288 print_str:295 print_ln:298 +Calls in [mul8u_error] to print_str:303 print_byte:307 print_str:309 print_byte:313 print_str:315 print_word:319 print_str:321 print_word:325 print_str:327 print_word:331 print_ln:334 +Calls in [mulf8u] to mulf8u_prepare:338 mulf8u_prepared:341 +Calls in [mulf_tables_cmp] to print_str:359 print_word:362 print_str:364 print_word:367 print_str:375 print_ln:377 Created 63 initial phi equivalence classes Not coalescing [54] print_char_cursor#192 ← print_line_cursor#1 @@ -3526,81 +3518,81 @@ Coalesced [153] print_sbyte::b#12 ← print_sbyte::b#3 Coalesced (already) [156] print_char_cursor#217 ← print_char_cursor#18 Coalesced (already) [159] print_char_cursor#222 ← print_char_cursor#132 Coalesced [162] print_sbyte::b#11 ← print_sbyte::b#0 -Coalesced [173] mul8s::m#7 ← mul8s::m#1 -Coalesced [180] mul8s::m#10 ← mul8s::m#2 -Coalesced [183] mul8s::m#9 ← mul8s::m#5 -Coalesced [184] mul8s::m#8 ← mul8s::m#0 -Coalesced [187] mul8u::a#10 ← mul8u::a#6 -Coalesced [188] mul8u::mb#6 ← mul8u::mb#0 -Coalesced [195] mul8u::res#9 ← mul8u::res#1 -Coalesced [199] mul8u::a#11 ← mul8u::a#0 -Coalesced [200] mul8u::res#7 ← mul8u::res#6 -Coalesced [201] mul8u::mb#7 ← mul8u::mb#1 -Coalesced (already) [202] mul8u::res#8 ← mul8u::res#2 -Coalesced [220] mulf8s_prepared::m#7 ← mulf8s_prepared::m#1 -Coalesced [227] mulf8s_prepared::m#10 ← mulf8s_prepared::m#2 -Coalesced [230] mulf8s_prepared::m#9 ← mulf8s_prepared::m#5 -Coalesced [231] mulf8s_prepared::m#8 ← mulf8s_prepared::m#0 -Coalesced [247] muls8s::return#5 ← muls8s::m#1 -Coalesced [250] muls8s::m#10 ← muls8s::m#1 -Coalesced [251] muls8s::j#3 ← muls8s::j#1 -Coalesced [256] muls8s::return#6 ← muls8s::m#2 -Coalesced [257] muls8s::m#11 ← muls8s::m#2 -Coalesced [258] muls8s::i#3 ← muls8s::i#1 -Coalesced [274] mul8u::b#4 ← mul8u::b#1 -Coalesced [275] mul8u::a#9 ← mul8u::a#2 -Coalesced [298] print_char_cursor#198 ← print_char_cursor#31 -Coalesced [300] print_line_cursor#118 ← print_line_cursor#10 -Coalesced (already) [301] print_char_cursor#189 ← print_char_cursor#132 -Coalesced [303] mul8u_compare::a#14 ← mul8u_compare::a#1 -Coalesced [304] mul8u_compare::b#12 ← mul8u_compare::b#1 -Coalesced [305] mul8u_compare::ok#5 ← mul8u_compare::ok#4 -Coalesced (already) [306] print_char_cursor#199 ← print_char_cursor#31 -Coalesced [309] print_byte::b#7 ← print_byte::b#3 -Coalesced (already) [310] print_char_cursor#215 ← print_char_cursor#132 -Coalesced (already) [312] print_char_cursor#200 ← print_char_cursor#18 -Coalesced [315] print_byte::b#8 ← print_byte::b#4 -Coalesced (already) [316] print_char_cursor#216 ← print_char_cursor#132 -Coalesced (already) [318] print_char_cursor#201 ← print_char_cursor#18 -Coalesced [321] print_word::w#8 ← print_word::w#3 -Coalesced (already) [322] print_char_cursor#209 ← print_char_cursor#132 -Coalesced (already) [324] print_char_cursor#202 ← print_char_cursor#18 -Coalesced [327] print_word::w#9 ← print_word::w#4 -Coalesced (already) [328] print_char_cursor#210 ← print_char_cursor#132 -Coalesced (already) [330] print_char_cursor#203 ← print_char_cursor#18 -Coalesced [333] print_word::w#10 ← print_word::w#5 -Coalesced (already) [334] print_char_cursor#211 ← print_char_cursor#132 -Coalesced (already) [336] print_line_cursor#119 ← print_line_cursor#10 -Coalesced (already) [337] print_char_cursor#190 ← print_char_cursor#18 -Coalesced [341] mulf8u_prepare::a#4 ← mulf8u_prepare::a#0 -Coalesced [344] mulf8u_prepared::b#4 ← mulf8u_prepared::b#0 -Coalesced [354] muls8u::return#5 ← muls8u::m#1 -Coalesced [357] muls8u::m#5 ← muls8u::m#1 -Coalesced [358] muls8u::i#3 ← muls8u::i#1 -Coalesced (already) [365] print_char_cursor#212 ← print_char_cursor#132 -Coalesced (already) [367] print_char_cursor#204 ← print_char_cursor#18 -Coalesced (already) [370] print_char_cursor#213 ← print_char_cursor#132 -Coalesced (already) [372] print_char_cursor#226 ← print_char_cursor#18 -Coalesced (already) [380] print_char_cursor#191 ← print_char_cursor#132 -Not coalescing [382] print_char_cursor#225 ← print_line_cursor#1 -Coalesced (already) [383] print_line_cursor#122 ← print_line_cursor#1 -Coalesced [384] mulf_tables_cmp::kc_sqr#8 ← mulf_tables_cmp::kc_sqr#1 -Coalesced [385] mulf_tables_cmp::asm_sqr#6 ← mulf_tables_cmp::asm_sqr#1 -Coalesced [399] mulf_init::sqr#8 ← mulf_init::sqr#2 -Coalesced [400] mulf_init::x_2#7 ← mulf_init::x_2#1 -Coalesced [423] mulf_init::x_255#5 ← mulf_init::x_255#1 -Coalesced [424] mulf_init::sqr2_lo#5 ← mulf_init::sqr2_lo#1 -Coalesced [425] mulf_init::sqr2_hi#5 ← mulf_init::sqr2_hi#1 -Coalesced [426] mulf_init::dir#4 ← mulf_init::dir#3 -Coalesced (already) [427] mulf_init::dir#5 ← mulf_init::dir#2 -Coalesced [428] mulf_init::c#5 ← mulf_init::c#1 -Coalesced [429] mulf_init::sqr#6 ← mulf_init::sqr#1 -Coalesced [430] mulf_init::sqr1_lo#5 ← mulf_init::sqr1_lo#1 -Coalesced [431] mulf_init::sqr1_hi#5 ← mulf_init::sqr1_hi#1 -Coalesced [432] mulf_init::x_2#5 ← mulf_init::x_2#2 -Coalesced [433] mulf_init::sqr#7 ← mulf_init::sqr#4 -Coalesced (already) [434] mulf_init::x_2#6 ← mulf_init::x_2#3 -Coalesced [441] print_cls::sc#3 ← print_cls::sc#1 +Coalesced [172] mul8s::m#7 ← mul8s::m#1 +Coalesced [178] mul8s::m#10 ← mul8s::m#2 +Coalesced [181] mul8s::m#9 ← mul8s::m#5 +Coalesced [182] mul8s::m#8 ← mul8s::m#0 +Coalesced [185] mul8u::a#10 ← mul8u::a#6 +Coalesced [186] mul8u::mb#6 ← mul8u::mb#0 +Coalesced [193] mul8u::res#9 ← mul8u::res#1 +Coalesced [197] mul8u::a#11 ← mul8u::a#0 +Coalesced [198] mul8u::res#7 ← mul8u::res#6 +Coalesced [199] mul8u::mb#7 ← mul8u::mb#1 +Coalesced (already) [200] mul8u::res#8 ← mul8u::res#2 +Coalesced [217] mulf8s_prepared::m#7 ← mulf8s_prepared::m#1 +Coalesced [223] mulf8s_prepared::m#10 ← mulf8s_prepared::m#2 +Coalesced [226] mulf8s_prepared::m#9 ← mulf8s_prepared::m#5 +Coalesced [227] mulf8s_prepared::m#8 ← mulf8s_prepared::m#0 +Coalesced [243] muls8s::return#5 ← muls8s::m#1 +Coalesced [246] muls8s::m#10 ← muls8s::m#1 +Coalesced [247] muls8s::j#3 ← muls8s::j#1 +Coalesced [252] muls8s::return#6 ← muls8s::m#2 +Coalesced [253] muls8s::m#11 ← muls8s::m#2 +Coalesced [254] muls8s::i#3 ← muls8s::i#1 +Coalesced [270] mul8u::b#4 ← mul8u::b#1 +Coalesced [271] mul8u::a#9 ← mul8u::a#2 +Coalesced [294] print_char_cursor#198 ← print_char_cursor#31 +Coalesced [296] print_line_cursor#118 ← print_line_cursor#10 +Coalesced (already) [297] print_char_cursor#189 ← print_char_cursor#132 +Coalesced [299] mul8u_compare::a#14 ← mul8u_compare::a#1 +Coalesced [300] mul8u_compare::b#12 ← mul8u_compare::b#1 +Coalesced [301] mul8u_compare::ok#5 ← mul8u_compare::ok#4 +Coalesced (already) [302] print_char_cursor#199 ← print_char_cursor#31 +Coalesced [305] print_byte::b#7 ← print_byte::b#3 +Coalesced (already) [306] print_char_cursor#215 ← print_char_cursor#132 +Coalesced (already) [308] print_char_cursor#200 ← print_char_cursor#18 +Coalesced [311] print_byte::b#8 ← print_byte::b#4 +Coalesced (already) [312] print_char_cursor#216 ← print_char_cursor#132 +Coalesced (already) [314] print_char_cursor#201 ← print_char_cursor#18 +Coalesced [317] print_word::w#8 ← print_word::w#3 +Coalesced (already) [318] print_char_cursor#209 ← print_char_cursor#132 +Coalesced (already) [320] print_char_cursor#202 ← print_char_cursor#18 +Coalesced [323] print_word::w#9 ← print_word::w#4 +Coalesced (already) [324] print_char_cursor#210 ← print_char_cursor#132 +Coalesced (already) [326] print_char_cursor#203 ← print_char_cursor#18 +Coalesced [329] print_word::w#10 ← print_word::w#5 +Coalesced (already) [330] print_char_cursor#211 ← print_char_cursor#132 +Coalesced (already) [332] print_line_cursor#119 ← print_line_cursor#10 +Coalesced (already) [333] print_char_cursor#190 ← print_char_cursor#18 +Coalesced [337] mulf8u_prepare::a#4 ← mulf8u_prepare::a#0 +Coalesced [340] mulf8u_prepared::b#4 ← mulf8u_prepared::b#0 +Coalesced [350] muls8u::return#5 ← muls8u::m#1 +Coalesced [353] muls8u::m#5 ← muls8u::m#1 +Coalesced [354] muls8u::i#3 ← muls8u::i#1 +Coalesced (already) [361] print_char_cursor#212 ← print_char_cursor#132 +Coalesced (already) [363] print_char_cursor#204 ← print_char_cursor#18 +Coalesced (already) [366] print_char_cursor#213 ← print_char_cursor#132 +Coalesced (already) [368] print_char_cursor#226 ← print_char_cursor#18 +Coalesced (already) [376] print_char_cursor#191 ← print_char_cursor#132 +Not coalescing [378] print_char_cursor#225 ← print_line_cursor#1 +Coalesced (already) [379] print_line_cursor#122 ← print_line_cursor#1 +Coalesced [380] mulf_tables_cmp::kc_sqr#8 ← mulf_tables_cmp::kc_sqr#1 +Coalesced [381] mulf_tables_cmp::asm_sqr#6 ← mulf_tables_cmp::asm_sqr#1 +Coalesced [395] mulf_init::sqr#8 ← mulf_init::sqr#2 +Coalesced [396] mulf_init::x_2#7 ← mulf_init::x_2#1 +Coalesced [419] mulf_init::x_255#5 ← mulf_init::x_255#1 +Coalesced [420] mulf_init::sqr2_lo#5 ← mulf_init::sqr2_lo#1 +Coalesced [421] mulf_init::sqr2_hi#5 ← mulf_init::sqr2_hi#1 +Coalesced [422] mulf_init::dir#4 ← mulf_init::dir#3 +Coalesced (already) [423] mulf_init::dir#5 ← mulf_init::dir#2 +Coalesced [424] mulf_init::c#5 ← mulf_init::c#1 +Coalesced [425] mulf_init::sqr#6 ← mulf_init::sqr#1 +Coalesced [426] mulf_init::sqr1_lo#5 ← mulf_init::sqr1_lo#1 +Coalesced [427] mulf_init::sqr1_hi#5 ← mulf_init::sqr1_hi#1 +Coalesced [428] mulf_init::x_2#5 ← mulf_init::x_2#2 +Coalesced [429] mulf_init::sqr#7 ← mulf_init::sqr#4 +Coalesced (already) [430] mulf_init::x_2#6 ← mulf_init::x_2#3 +Coalesced [437] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 39 phi equivalence classes Culled Empty Block (label) mul8s_compare::@7 Culled Empty Block (label) mul8s_compare::@18 @@ -3944,415 +3936,411 @@ mul8s::@6: scope:[mul8s] from mul8s [136] if((signed byte) mul8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@1 to:mul8s::@3 mul8s::@3: scope:[mul8s] from mul8s::@6 - [137] (byte~) mul8s::$5 ← > (word) mul8s::m#0 - [138] (byte~) mul8s::$6 ← > (word) mul8s::m#0 - [139] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 - [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 + [137] (byte~) mul8s::$6 ← > (word) mul8s::m#0 + [138] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 + [139] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 to:mul8s::@1 mul8s::@1: scope:[mul8s] from mul8s::@3 mul8s::@6 - [141] (word) mul8s::m#5 ← phi( mul8s::@3/(word) mul8s::m#1 mul8s::@6/(word) mul8s::m#0 ) - [142] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 + [140] (word) mul8s::m#5 ← phi( mul8s::@3/(word) mul8s::m#1 mul8s::@6/(word) mul8s::m#0 ) + [141] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 to:mul8s::@4 mul8s::@4: scope:[mul8s] from mul8s::@1 - [143] (byte~) mul8s::$11 ← > (word) mul8s::m#5 - [144] (byte~) mul8s::$12 ← > (word) mul8s::m#5 - [145] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 - [146] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 + [142] (byte~) mul8s::$12 ← > (word) mul8s::m#5 + [143] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 + [144] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 to:mul8s::@2 mul8s::@2: scope:[mul8s] from mul8s::@1 mul8s::@4 - [147] (word) mul8s::m#4 ← phi( mul8s::@1/(word) mul8s::m#5 mul8s::@4/(word) mul8s::m#2 ) + [145] (word) mul8s::m#4 ← phi( mul8s::@1/(word) mul8s::m#5 mul8s::@4/(word) mul8s::m#2 ) to:mul8s::@return mul8s::@return: scope:[mul8s] from mul8s::@2 - [148] return + [146] return to:@return mul8u: scope:[mul8u] from mul8s mul8u_compare::@13 - [149] (byte) mul8u::a#6 ← phi( mul8s/(byte~) mul8u::a#8 mul8u_compare::@13/(byte) mul8u::a#2 ) - [149] (byte) mul8u::b#2 ← phi( mul8s/(byte~) mul8u::b#3 mul8u_compare::@13/(byte) mul8u::b#1 ) - [150] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 + [147] (byte) mul8u::a#6 ← phi( mul8s/(byte~) mul8u::a#8 mul8u_compare::@13/(byte) mul8u::a#2 ) + [147] (byte) mul8u::b#2 ← phi( mul8s/(byte~) mul8u::b#3 mul8u_compare::@13/(byte) mul8u::b#1 ) + [148] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 to:mul8u::@1 mul8u::@1: scope:[mul8u] from mul8u mul8u::@4 - [151] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 ) - [151] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 ) - [151] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 ) - [152] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 + [149] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 ) + [149] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 ) + [149] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 ) + [150] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 to:mul8u::@return mul8u::@return: scope:[mul8u] from mul8u::@1 - [153] return + [151] return to:@return mul8u::@2: scope:[mul8u] from mul8u::@1 - [154] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [155] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 + [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [153] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 to:mul8u::@7 mul8u::@7: scope:[mul8u] from mul8u::@2 - [156] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 + [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 to:mul8u::@4 mul8u::@4: scope:[mul8u] from mul8u::@2 mul8u::@7 - [157] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 ) - [158] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [159] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [155] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 ) + [156] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [157] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:mul8u::@1 mulf8s: scope:[mulf8s] from mul8s_compare::@12 - [160] phi() + [158] phi() to:mulf8s::mulf8s_prepare1 mulf8s::mulf8s_prepare1: scope:[mulf8s] from mulf8s - [161] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 - [162] call mulf8u_prepare + [159] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 + [160] call mulf8u_prepare to:mulf8s::@2 mulf8s::@2: scope:[mulf8s] from mulf8s::mulf8s_prepare1 - [163] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 - [164] call mulf8s_prepared - [165] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 + [161] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 + [162] call mulf8s_prepared + [163] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 to:mulf8s::@4 mulf8s::@4: scope:[mulf8s] from mulf8s::@2 - [166] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 + [164] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 to:mulf8s::@return mulf8s::@return: scope:[mulf8s] from mulf8s::@4 - [167] return + [165] return to:@return mulf8s_prepared: scope:[mulf8s_prepared] from mulf8s::@2 - [168] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 - [169] call mulf8u_prepared - [170] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 + [166] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 + [167] call mulf8u_prepared + [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 to:mulf8s_prepared::@6 mulf8s_prepared::@6: scope:[mulf8s_prepared] from mulf8s_prepared - [171] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 - [172] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 + [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 + [170] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 to:mulf8s_prepared::@3 mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@6 - [173] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 - [174] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 - [175] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 - [176] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 + [171] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 + [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 + [173] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 to:mulf8s_prepared::@1 mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_prepared::@6 - [177] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 ) - [178] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 + [174] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 ) + [175] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 to:mulf8s_prepared::@4 mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1 - [179] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 - [180] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 - [181] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) - [182] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 + [176] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 + [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) + [178] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 to:mulf8s_prepared::@2 mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_prepared::@4 - [183] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) + [179] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) to:mulf8s_prepared::@return mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2 - [184] return + [180] return to:@return mulf8u_prepared: scope:[mulf8u_prepared] from mulf8s_prepared mulf8u::@2 - [185] (byte) mulf8u_prepared::b#2 ← phi( mulf8s_prepared/(byte~) mulf8u_prepared::b#3 mulf8u::@2/(byte) mulf8u_prepared::b#0 ) - [186] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 + [181] (byte) mulf8u_prepared::b#2 ← phi( mulf8s_prepared/(byte~) mulf8u_prepared::b#3 mulf8u::@2/(byte) mulf8u_prepared::b#0 ) + [182] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } - [188] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) + [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) to:mulf8u_prepared::@return mulf8u_prepared::@return: scope:[mulf8u_prepared] from mulf8u_prepared - [189] return + [185] return to:@return mulf8u_prepare: scope:[mulf8u_prepare] from mulf8s::mulf8s_prepare1 mulf8u - [190] (byte) mulf8u_prepare::a#2 ← phi( mulf8s::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 mulf8u/(byte) mulf8u_prepare::a#0 ) - [191] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 + [186] (byte) mulf8u_prepare::a#2 ← phi( mulf8s::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 mulf8u/(byte) mulf8u_prepare::a#0 ) + [187] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } to:mulf8u_prepare::@return mulf8u_prepare::@return: scope:[mulf8u_prepare] from mulf8u_prepare - [193] return + [189] return to:@return muls8s: scope:[muls8s] from mul8s_compare::@2 - [194] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 + [190] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 to:muls8s::@6 muls8s::@6: scope:[muls8s] from muls8s - [195] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 + [191] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 to:muls8s::@3 muls8s::@3: scope:[muls8s] from muls8s::@3 muls8s::@6 - [196] (signed byte) muls8s::j#2 ← phi( muls8s::@3/(signed byte) muls8s::j#1 muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [196] (signed word) muls8s::m#3 ← phi( muls8s::@3/(signed word) muls8s::m#1 muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [197] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 - [198] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 - [199] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 + [192] (signed byte) muls8s::j#2 ← phi( muls8s::@3/(signed byte) muls8s::j#1 muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [192] (signed word) muls8s::m#3 ← phi( muls8s::@3/(signed word) muls8s::m#1 muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [193] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 + [194] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 + [195] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 to:muls8s::@4 muls8s::@4: scope:[muls8s] from muls8s::@3 muls8s::@5 muls8s::@6 - [200] (signed word) muls8s::return#0 ← phi( muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@3/(signed word) muls8s::m#1 muls8s::@5/(signed word) muls8s::m#2 ) + [196] (signed word) muls8s::return#0 ← phi( muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@3/(signed word) muls8s::m#1 muls8s::@5/(signed word) muls8s::m#2 ) to:muls8s::@return muls8s::@return: scope:[muls8s] from muls8s::@4 - [201] return + [197] return to:@return muls8s::@5: scope:[muls8s] from muls8s muls8s::@5 - [202] (signed byte) muls8s::i#2 ← phi( muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed byte) muls8s::i#1 ) - [202] (signed word) muls8s::m#5 ← phi( muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed word) muls8s::m#2 ) - [203] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 - [204] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 - [205] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 + [198] (signed byte) muls8s::i#2 ← phi( muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed byte) muls8s::i#1 ) + [198] (signed word) muls8s::m#5 ← phi( muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed word) muls8s::m#2 ) + [199] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 + [200] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 + [201] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 to:muls8s::@4 mul8u_compare: scope:[mul8u_compare] from main::@4 - [206] phi() + [202] phi() to:mul8u_compare::@1 mul8u_compare::@1: scope:[mul8u_compare] from mul8u_compare mul8u_compare::@10 - [207] (byte) mul8u_compare::a#7 ← phi( mul8u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u_compare::@10/(byte) mul8u_compare::a#1 ) + [203] (byte) mul8u_compare::a#7 ← phi( mul8u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u_compare::@10/(byte) mul8u_compare::a#1 ) to:mul8u_compare::@2 mul8u_compare::@2: scope:[mul8u_compare] from mul8u_compare::@1 mul8u_compare::@5 - [208] (byte) mul8u_compare::b#10 ← phi( mul8u_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u_compare::@5/(byte) mul8u_compare::b#1 ) - [209] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 - [210] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 - [211] call muls8u - [212] (word) muls8u::return#2 ← (word) muls8u::return#0 + [204] (byte) mul8u_compare::b#10 ← phi( mul8u_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u_compare::@5/(byte) mul8u_compare::b#1 ) + [205] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 + [206] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 + [207] call muls8u + [208] (word) muls8u::return#2 ← (word) muls8u::return#0 to:mul8u_compare::@12 mul8u_compare::@12: scope:[mul8u_compare] from mul8u_compare::@2 - [213] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 - [214] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 - [215] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 - [216] call mulf8u - [217] (word) mulf8u::return#2 ← (word) mulf8u::return#0 + [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 + [210] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 + [211] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 + [212] call mulf8u + [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0 to:mul8u_compare::@13 mul8u_compare::@13: scope:[mul8u_compare] from mul8u_compare::@12 - [218] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 - [219] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 - [220] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 - [221] call mul8u - [222] (word) mul8u::return#3 ← (word) mul8u::res#2 + [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 + [215] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 + [216] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 + [217] call mul8u + [218] (word) mul8u::return#3 ← (word) mul8u::res#2 to:mul8u_compare::@14 mul8u_compare::@14: scope:[mul8u_compare] from mul8u_compare::@13 - [223] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 - [224] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 + [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 + [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 to:mul8u_compare::@6 mul8u_compare::@6: scope:[mul8u_compare] from mul8u_compare::@14 - [225] phi() + [221] phi() to:mul8u_compare::@3 mul8u_compare::@3: scope:[mul8u_compare] from mul8u_compare::@14 mul8u_compare::@6 - [226] (byte) mul8u_compare::ok#4 ← phi( mul8u_compare::@14/(byte/signed byte/word/signed word/dword/signed dword) 1 mul8u_compare::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [227] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 + [222] (byte) mul8u_compare::ok#4 ← phi( mul8u_compare::@14/(byte/signed byte/word/signed word/dword/signed dword) 1 mul8u_compare::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [223] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 to:mul8u_compare::@4 mul8u_compare::@4: scope:[mul8u_compare] from mul8u_compare::@20 mul8u_compare::@3 - [228] (byte) mul8u_compare::ok#3 ← phi( mul8u_compare::@20/(byte) mul8u_compare::ok#4 mul8u_compare::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [229] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 + [224] (byte) mul8u_compare::ok#3 ← phi( mul8u_compare::@20/(byte) mul8u_compare::ok#4 mul8u_compare::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [225] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 to:mul8u_compare::@8 mul8u_compare::@8: scope:[mul8u_compare] from mul8u_compare::@4 - [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 - [231] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 - [232] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 - [233] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 - [234] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 - [235] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 - [236] call mul8u_error + [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 + [227] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 + [228] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 + [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 + [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 + [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 + [232] call mul8u_error to:mul8u_compare::@return mul8u_compare::@return: scope:[mul8u_compare] from mul8u_compare::@16 mul8u_compare::@8 - [237] return + [233] return to:@return mul8u_compare::@5: scope:[mul8u_compare] from mul8u_compare::@4 - [238] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 - [239] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 + [234] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 + [235] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 to:mul8u_compare::@10 mul8u_compare::@10: scope:[mul8u_compare] from mul8u_compare::@5 - [240] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 - [241] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 + [236] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 + [237] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 to:mul8u_compare::@11 mul8u_compare::@11: scope:[mul8u_compare] from mul8u_compare::@10 - [242] phi() - [243] call print_str + [238] phi() + [239] call print_str to:mul8u_compare::@16 mul8u_compare::@16: scope:[mul8u_compare] from mul8u_compare::@11 - [244] phi() - [245] call print_ln + [240] phi() + [241] call print_ln to:mul8u_compare::@return mul8u_compare::@20: scope:[mul8u_compare] from mul8u_compare::@3 - [246] phi() + [242] phi() to:mul8u_compare::@4 mul8u_error: scope:[mul8u_error] from mul8u_compare::@8 - [247] phi() - [248] call print_str + [243] phi() + [244] call print_str to:mul8u_error::@1 mul8u_error::@1: scope:[mul8u_error] from mul8u_error - [249] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 - [250] call print_byte + [245] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 + [246] call print_byte to:mul8u_error::@2 mul8u_error::@2: scope:[mul8u_error] from mul8u_error::@1 - [251] phi() - [252] call print_str + [247] phi() + [248] call print_str to:mul8u_error::@3 mul8u_error::@3: scope:[mul8u_error] from mul8u_error::@2 - [253] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 - [254] call print_byte + [249] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 + [250] call print_byte to:mul8u_error::@4 mul8u_error::@4: scope:[mul8u_error] from mul8u_error::@3 - [255] phi() - [256] call print_str + [251] phi() + [252] call print_str to:mul8u_error::@5 mul8u_error::@5: scope:[mul8u_error] from mul8u_error::@4 - [257] (word) print_word::w#3 ← (word) mul8u_error::ms#0 - [258] call print_word + [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0 + [254] call print_word to:mul8u_error::@6 mul8u_error::@6: scope:[mul8u_error] from mul8u_error::@5 - [259] phi() - [260] call print_str + [255] phi() + [256] call print_str to:mul8u_error::@7 mul8u_error::@7: scope:[mul8u_error] from mul8u_error::@6 - [261] (word) print_word::w#4 ← (word) mul8u_error::mn#0 - [262] call print_word + [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 + [258] call print_word to:mul8u_error::@8 mul8u_error::@8: scope:[mul8u_error] from mul8u_error::@7 - [263] phi() - [264] call print_str + [259] phi() + [260] call print_str to:mul8u_error::@9 mul8u_error::@9: scope:[mul8u_error] from mul8u_error::@8 - [265] (word) print_word::w#5 ← (word) mul8u_error::mf#0 - [266] call print_word + [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 + [262] call print_word to:mul8u_error::@10 mul8u_error::@10: scope:[mul8u_error] from mul8u_error::@9 - [267] phi() - [268] call print_ln + [263] phi() + [264] call print_ln to:mul8u_error::@return mul8u_error::@return: scope:[mul8u_error] from mul8u_error::@10 - [269] return + [265] return to:@return mulf8u: scope:[mulf8u] from mul8u_compare::@12 - [270] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 - [271] call mulf8u_prepare + [266] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 + [267] call mulf8u_prepare to:mulf8u::@2 mulf8u::@2: scope:[mulf8u] from mulf8u - [272] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 - [273] call mulf8u_prepared - [274] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 + [268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 + [269] call mulf8u_prepared + [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 to:mulf8u::@3 mulf8u::@3: scope:[mulf8u] from mulf8u::@2 - [275] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 + [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 to:mulf8u::@return mulf8u::@return: scope:[mulf8u] from mulf8u::@3 - [276] return + [272] return to:@return muls8u: scope:[muls8u] from mul8u_compare::@2 - [277] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 + [273] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 to:muls8u::@2 muls8u::@2: scope:[muls8u] from muls8u muls8u::@2 - [278] (byte) muls8u::i#2 ← phi( muls8u::@2/(byte) muls8u::i#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [278] (word) muls8u::m#3 ← phi( muls8u::@2/(word) muls8u::m#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [279] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 - [280] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 - [281] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 + [274] (byte) muls8u::i#2 ← phi( muls8u::@2/(byte) muls8u::i#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [274] (word) muls8u::m#3 ← phi( muls8u::@2/(word) muls8u::m#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [275] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 + [276] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 + [277] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 to:muls8u::@1 muls8u::@1: scope:[muls8u] from muls8u muls8u::@2 - [282] (word) muls8u::return#0 ← phi( muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8u::@2/(word) muls8u::m#1 ) + [278] (word) muls8u::return#0 ← phi( muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8u::@2/(word) muls8u::m#1 ) to:muls8u::@return muls8u::@return: scope:[muls8u] from muls8u::@1 - [283] return + [279] return to:@return mulf_tables_cmp: scope:[mulf_tables_cmp] from main::@3 - [284] phi() + [280] phi() to:mulf_tables_cmp::@1 mulf_tables_cmp::@1: scope:[mulf_tables_cmp] from mulf_tables_cmp mulf_tables_cmp::@2 - [285] (byte*) mulf_tables_cmp::asm_sqr#2 ← phi( mulf_tables_cmp/(const byte[512]) mula_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::asm_sqr#1 ) - [285] (byte*) mulf_tables_cmp::kc_sqr#2 ← phi( mulf_tables_cmp/(const byte[512]) mulf_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::kc_sqr#1 ) - [286] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 + [281] (byte*) mulf_tables_cmp::asm_sqr#2 ← phi( mulf_tables_cmp/(const byte[512]) mula_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::asm_sqr#1 ) + [281] (byte*) mulf_tables_cmp::kc_sqr#2 ← phi( mulf_tables_cmp/(const byte[512]) mulf_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::kc_sqr#1 ) + [282] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 to:mulf_tables_cmp::@3 mulf_tables_cmp::@3: scope:[mulf_tables_cmp] from mulf_tables_cmp::@1 - [287] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 - [288] call print_str + [283] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 + [284] call print_str to:mulf_tables_cmp::@6 mulf_tables_cmp::@6: scope:[mulf_tables_cmp] from mulf_tables_cmp::@3 - [289] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 - [290] call print_word + [285] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 + [286] call print_word to:mulf_tables_cmp::@7 mulf_tables_cmp::@7: scope:[mulf_tables_cmp] from mulf_tables_cmp::@6 - [291] phi() - [292] call print_str + [287] phi() + [288] call print_str to:mulf_tables_cmp::@8 mulf_tables_cmp::@8: scope:[mulf_tables_cmp] from mulf_tables_cmp::@7 - [293] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 - [294] call print_word + [289] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 + [290] call print_word to:mulf_tables_cmp::@return mulf_tables_cmp::@return: scope:[mulf_tables_cmp] from mulf_tables_cmp::@10 mulf_tables_cmp::@8 - [295] (byte*) print_line_cursor#10 ← phi( mulf_tables_cmp::@10/(byte*) print_line_cursor#1 mulf_tables_cmp::@8/((byte*))(word/signed word/dword/signed dword) 1024 ) - [295] (byte*) print_char_cursor#31 ← phi( mulf_tables_cmp::@10/(byte*~) print_char_cursor#225 mulf_tables_cmp::@8/(byte*) print_char_cursor#18 ) - [296] return + [291] (byte*) print_line_cursor#10 ← phi( mulf_tables_cmp::@10/(byte*) print_line_cursor#1 mulf_tables_cmp::@8/((byte*))(word/signed word/dword/signed dword) 1024 ) + [291] (byte*) print_char_cursor#31 ← phi( mulf_tables_cmp::@10/(byte*~) print_char_cursor#225 mulf_tables_cmp::@8/(byte*) print_char_cursor#18 ) + [292] return to:@return mulf_tables_cmp::@2: scope:[mulf_tables_cmp] from mulf_tables_cmp::@1 - [297] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 - [298] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 - [299] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 + [293] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 + [294] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 + [295] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 to:mulf_tables_cmp::@5 mulf_tables_cmp::@5: scope:[mulf_tables_cmp] from mulf_tables_cmp::@2 - [300] phi() - [301] call print_str + [296] phi() + [297] call print_str to:mulf_tables_cmp::@10 mulf_tables_cmp::@10: scope:[mulf_tables_cmp] from mulf_tables_cmp::@5 - [302] phi() - [303] call print_ln - [304] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 + [298] phi() + [299] call print_ln + [300] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 to:mulf_tables_cmp::@return mulf_init_asm: scope:[mulf_init_asm] from main::@2 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } - [306] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) - [307] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) - [308] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) - [309] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) + [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) + [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) + [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) + [305] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) to:mulf_init_asm::@return mulf_init_asm::@return: scope:[mulf_init_asm] from mulf_init_asm - [310] return + [306] return to:@return mulf_init: scope:[mulf_init] from main::@1 - [311] phi() + [307] phi() to:mulf_init::@1 mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2 - [312] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) - [312] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) - [312] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) - [312] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) - [312] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) - [313] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 - [314] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [315] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 + [308] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) + [308] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) + [308] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) + [308] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) + [308] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) + [309] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 + [310] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [311] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 to:mulf_init::@5 mulf_init::@5: scope:[mulf_init] from mulf_init::@1 - [316] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 - [317] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 + [312] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 + [313] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 to:mulf_init::@2 mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@5 - [318] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) - [318] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) - [319] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 - [320] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 - [321] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 - [322] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 - [323] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 - [324] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 - [325] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 - [326] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 + [314] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) + [314] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) + [315] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 + [316] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 + [317] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 + [318] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 + [319] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 + [320] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 + [321] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 + [322] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 to:mulf_init::@3 mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4 - [327] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) - [327] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) - [327] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) - [327] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [328] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) - [329] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) - [330] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 - [331] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 - [332] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 + [323] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) + [323] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) + [323] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) + [323] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [324] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) + [325] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) + [326] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 + [327] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 + [328] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 to:mulf_init::@4 mulf_init::@4: scope:[mulf_init] from mulf_init::@12 mulf_init::@3 - [333] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [334] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 - [335] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 + [329] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [330] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 + [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 to:mulf_init::@8 mulf_init::@8: scope:[mulf_init] from mulf_init::@4 - [336] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) - [337] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) + [332] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) + [333] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) to:mulf_init::@return mulf_init::@return: scope:[mulf_init] from mulf_init::@8 - [338] return + [334] return to:@return mulf_init::@12: scope:[mulf_init] from mulf_init::@3 - [339] phi() + [335] phi() to:mulf_init::@4 print_cls: scope:[print_cls] from main - [340] phi() + [336] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [341] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [342] *((byte*) print_cls::sc#2) ← (byte) ' ' - [343] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [344] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 + [337] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [338] *((byte*) print_cls::sc#2) ← (byte) ' ' + [339] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [340] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [345] return + [341] return to:@return @@ -4360,22 +4348,20 @@ VARIABLE REGISTER WEIGHTS (byte*) BGCOL (void()) main() (signed word()) mul8s((signed byte) mul8s::a , (signed byte) mul8s::b) -(byte~) mul8s::$11 20.0 (byte~) mul8s::$12 4.0 (byte~) mul8s::$16 4.0 (byte~) mul8s::$17 4.0 -(byte~) mul8s::$5 20.0 (byte~) mul8s::$6 4.0 (signed byte) mul8s::a -(signed byte) mul8s::a#0 6.4375 +(signed byte) mul8s::a#0 7.357142857142858 (signed byte) mul8s::b -(signed byte) mul8s::b#0 8.583333333333332 +(signed byte) mul8s::b#0 9.363636363636363 (word) mul8s::m (word) mul8s::m#0 2.0 (word) mul8s::m#1 4.0 (word) mul8s::m#2 4.0 (word) mul8s::m#4 1.3333333333333333 -(word) mul8s::m#5 2.4 +(word) mul8s::m#5 2.5 (signed word) mul8s::return (signed word) mul8s::return#2 202.0 (void()) mul8s_compare() @@ -4470,20 +4456,18 @@ VARIABLE REGISTER WEIGHTS (signed word) mulf8s::return#0 34.33333333333333 (signed word) mulf8s::return#2 202.0 (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -(byte~) mulf8s_prepared::$10 20.0 (byte~) mulf8s_prepared::$11 4.0 (byte~) mulf8s_prepared::$15 4.0 (byte~) mulf8s_prepared::$16 4.0 -(byte~) mulf8s_prepared::$4 20.0 (byte~) mulf8s_prepared::$5 4.0 (signed byte) mulf8s_prepared::b -(signed byte) mulf8s_prepared::b#0 0.36363636363636365 +(signed byte) mulf8s_prepared::b#0 0.4 (word) mulf8s_prepared::m (word) mulf8s_prepared::m#0 2.0 (word) mulf8s_prepared::m#1 4.0 (word) mulf8s_prepared::m#2 4.0 (word) mulf8s_prepared::m#4 1.3333333333333333 -(word) mulf8s_prepared::m#5 2.4 +(word) mulf8s_prepared::m#5 2.5 (signed byte*) mulf8s_prepared::memA (signed word) mulf8s_prepared::return (signed word) mulf8s_prepared::return#2 4.0 @@ -4723,10 +4707,8 @@ Added variable mul8s_error::mf#0 to zero page equivalence class [ mul8s_error::m Added variable print_byte::$0 to zero page equivalence class [ print_byte::$0 ] Added variable print_byte::$2 to zero page equivalence class [ print_byte::$2 ] Added variable mul8u::return#2 to zero page equivalence class [ mul8u::return#2 ] -Added variable mul8s::$5 to zero page equivalence class [ mul8s::$5 ] Added variable mul8s::$6 to zero page equivalence class [ mul8s::$6 ] Added variable mul8s::$16 to zero page equivalence class [ mul8s::$16 ] -Added variable mul8s::$11 to zero page equivalence class [ mul8s::$11 ] Added variable mul8s::$12 to zero page equivalence class [ mul8s::$12 ] Added variable mul8s::$17 to zero page equivalence class [ mul8s::$17 ] Added variable mul8u::$1 to zero page equivalence class [ mul8u::$1 ] @@ -4734,10 +4716,8 @@ Added variable mulf8s_prepared::b#0 to zero page equivalence class [ mulf8s_prep Added variable mulf8s_prepared::return#2 to zero page equivalence class [ mulf8s_prepared::return#2 ] Added variable mulf8s::return#0 to zero page equivalence class [ mulf8s::return#0 ] Added variable mulf8u_prepared::return#3 to zero page equivalence class [ mulf8u_prepared::return#3 ] -Added variable mulf8s_prepared::$4 to zero page equivalence class [ mulf8s_prepared::$4 ] Added variable mulf8s_prepared::$5 to zero page equivalence class [ mulf8s_prepared::$5 ] Added variable mulf8s_prepared::$15 to zero page equivalence class [ mulf8s_prepared::$15 ] -Added variable mulf8s_prepared::$10 to zero page equivalence class [ mulf8s_prepared::$10 ] Added variable mulf8s_prepared::$11 to zero page equivalence class [ mulf8s_prepared::$11 ] Added variable mulf8s_prepared::$16 to zero page equivalence class [ mulf8s_prepared::$16 ] Added variable mulf8u_prepared::return#0 to zero page equivalence class [ mulf8u_prepared::return#0 ] @@ -4821,10 +4801,8 @@ Complete equivalence classes [ print_byte::$0 ] [ print_byte::$2 ] [ mul8u::return#2 ] -[ mul8s::$5 ] [ mul8s::$6 ] [ mul8s::$16 ] -[ mul8s::$11 ] [ mul8s::$12 ] [ mul8s::$17 ] [ mul8u::$1 ] @@ -4832,10 +4810,8 @@ Complete equivalence classes [ mulf8s_prepared::return#2 ] [ mulf8s::return#0 ] [ mulf8u_prepared::return#3 ] -[ mulf8s_prepared::$4 ] [ mulf8s_prepared::$5 ] [ mulf8s_prepared::$15 ] -[ mulf8s_prepared::$10 ] [ mulf8s_prepared::$11 ] [ mulf8s_prepared::$16 ] [ mulf8u_prepared::return#0 ] @@ -4918,44 +4894,40 @@ Allocated zp ZP_WORD:84 [ mul8s_error::mf#0 ] Allocated zp ZP_BYTE:86 [ print_byte::$0 ] Allocated zp ZP_BYTE:87 [ print_byte::$2 ] Allocated zp ZP_WORD:88 [ mul8u::return#2 ] -Allocated zp ZP_BYTE:90 [ mul8s::$5 ] -Allocated zp ZP_BYTE:91 [ mul8s::$6 ] -Allocated zp ZP_BYTE:92 [ mul8s::$16 ] -Allocated zp ZP_BYTE:93 [ mul8s::$11 ] -Allocated zp ZP_BYTE:94 [ mul8s::$12 ] -Allocated zp ZP_BYTE:95 [ mul8s::$17 ] -Allocated zp ZP_BYTE:96 [ mul8u::$1 ] -Allocated zp ZP_BYTE:97 [ mulf8s_prepared::b#0 ] -Allocated zp ZP_WORD:98 [ mulf8s_prepared::return#2 ] -Allocated zp ZP_WORD:100 [ mulf8s::return#0 ] -Allocated zp ZP_WORD:102 [ mulf8u_prepared::return#3 ] -Allocated zp ZP_BYTE:104 [ mulf8s_prepared::$4 ] -Allocated zp ZP_BYTE:105 [ mulf8s_prepared::$5 ] -Allocated zp ZP_BYTE:106 [ mulf8s_prepared::$15 ] -Allocated zp ZP_BYTE:107 [ mulf8s_prepared::$10 ] -Allocated zp ZP_BYTE:108 [ mulf8s_prepared::$11 ] -Allocated zp ZP_BYTE:109 [ mulf8s_prepared::$16 ] -Allocated zp ZP_WORD:110 [ mulf8u_prepared::return#0 ] -Allocated zp ZP_BYTE:112 [ muls8u::a#0 ] -Allocated zp ZP_BYTE:113 [ muls8u::b#0 ] -Allocated zp ZP_WORD:114 [ muls8u::return#2 ] -Allocated zp ZP_WORD:116 [ mul8u_compare::ms#0 ] -Allocated zp ZP_BYTE:118 [ mulf8u::a#0 ] -Allocated zp ZP_BYTE:119 [ mulf8u::b#0 ] -Allocated zp ZP_WORD:120 [ mulf8u::return#2 ] -Allocated zp ZP_WORD:122 [ mul8u_compare::mf#0 ] -Allocated zp ZP_WORD:124 [ mul8u::return#3 ] -Allocated zp ZP_WORD:126 [ mul8u_compare::mn#0 ] -Allocated zp ZP_BYTE:128 [ mul8u_error::a#0 ] -Allocated zp ZP_BYTE:129 [ mul8u_error::b#0 ] -Allocated zp ZP_WORD:130 [ mul8u_error::ms#0 ] -Allocated zp ZP_WORD:132 [ mul8u_error::mn#0 ] -Allocated zp ZP_WORD:134 [ mul8u_error::mf#0 ] -Allocated zp ZP_WORD:136 [ mulf8u_prepared::return#2 ] -Allocated zp ZP_WORD:138 [ mulf8u::return#0 ] -Allocated zp ZP_BYTE:140 [ mulf_init::$2 ] -Allocated zp ZP_BYTE:141 [ mulf_init::$5 ] -Allocated zp ZP_BYTE:142 [ mulf_init::$6 ] +Allocated zp ZP_BYTE:90 [ mul8s::$6 ] +Allocated zp ZP_BYTE:91 [ mul8s::$16 ] +Allocated zp ZP_BYTE:92 [ mul8s::$12 ] +Allocated zp ZP_BYTE:93 [ mul8s::$17 ] +Allocated zp ZP_BYTE:94 [ mul8u::$1 ] +Allocated zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] +Allocated zp ZP_WORD:96 [ mulf8s_prepared::return#2 ] +Allocated zp ZP_WORD:98 [ mulf8s::return#0 ] +Allocated zp ZP_WORD:100 [ mulf8u_prepared::return#3 ] +Allocated zp ZP_BYTE:102 [ mulf8s_prepared::$5 ] +Allocated zp ZP_BYTE:103 [ mulf8s_prepared::$15 ] +Allocated zp ZP_BYTE:104 [ mulf8s_prepared::$11 ] +Allocated zp ZP_BYTE:105 [ mulf8s_prepared::$16 ] +Allocated zp ZP_WORD:106 [ mulf8u_prepared::return#0 ] +Allocated zp ZP_BYTE:108 [ muls8u::a#0 ] +Allocated zp ZP_BYTE:109 [ muls8u::b#0 ] +Allocated zp ZP_WORD:110 [ muls8u::return#2 ] +Allocated zp ZP_WORD:112 [ mul8u_compare::ms#0 ] +Allocated zp ZP_BYTE:114 [ mulf8u::a#0 ] +Allocated zp ZP_BYTE:115 [ mulf8u::b#0 ] +Allocated zp ZP_WORD:116 [ mulf8u::return#2 ] +Allocated zp ZP_WORD:118 [ mul8u_compare::mf#0 ] +Allocated zp ZP_WORD:120 [ mul8u::return#3 ] +Allocated zp ZP_WORD:122 [ mul8u_compare::mn#0 ] +Allocated zp ZP_BYTE:124 [ mul8u_error::a#0 ] +Allocated zp ZP_BYTE:125 [ mul8u_error::b#0 ] +Allocated zp ZP_WORD:126 [ mul8u_error::ms#0 ] +Allocated zp ZP_WORD:128 [ mul8u_error::mn#0 ] +Allocated zp ZP_WORD:130 [ mul8u_error::mf#0 ] +Allocated zp ZP_WORD:132 [ mulf8u_prepared::return#2 ] +Allocated zp ZP_WORD:134 [ mulf8u::return#0 ] +Allocated zp ZP_BYTE:136 [ mulf_init::$2 ] +Allocated zp ZP_BYTE:137 [ mulf_init::$5 ] +Allocated zp ZP_BYTE:138 [ mulf_init::$6 ] INITIAL ASM //SEG0 File Comments @@ -4988,7 +4960,7 @@ main: { lda #5 sta BGCOL //SEG11 [5] call print_cls - //SEG12 [340] phi from main to print_cls [phi:main->print_cls] + //SEG12 [336] 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] @@ -4997,7 +4969,7 @@ main: { //SEG14 main::@1 b1: //SEG15 [7] call mulf_init - //SEG16 [311] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG16 [307] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] mulf_init_from_b1: jsr mulf_init //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -5013,7 +4985,7 @@ main: { //SEG21 main::@3 b3: //SEG22 [11] call mulf_tables_cmp - //SEG23 [284] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp] + //SEG23 [280] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp] mulf_tables_cmp_from_b3: jsr mulf_tables_cmp //SEG24 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] @@ -5022,7 +4994,7 @@ main: { //SEG25 main::@4 b4: //SEG26 [13] call mul8u_compare - //SEG27 [206] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare] + //SEG27 [202] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare] mul8u_compare_from_b4: jsr mul8u_compare //SEG28 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] @@ -5101,7 +5073,7 @@ mul8s_compare: { lda b sta mulf8s.b //SEG53 [27] call mulf8s - //SEG54 [160] phi from mul8s_compare::@12 to mulf8s [phi:mul8s_compare::@12->mulf8s] + //SEG54 [158] phi from mul8s_compare::@12 to mulf8s [phi:mul8s_compare::@12->mulf8s] mulf8s_from_b12: jsr mulf8s //SEG55 [28] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 -- vwsz1=vwsz2 @@ -5743,12 +5715,10 @@ print_sbyte: { // Fixes offsets introduced by using unsigned multiplication // mul8s(signed byte zeropage($48) a, signed byte zeropage($49) b) mul8s: { - .label _5 = $5a - .label _6 = $5b - .label _11 = $5d - .label _12 = $5e - .label _16 = $5c - .label _17 = $5f + .label _6 = $5a + .label _12 = $5c + .label _16 = $5b + .label _17 = $5d .label m = $12 .label a = $48 .label b = $49 @@ -5760,10 +5730,10 @@ mul8s: { lda a sta mul8u.a //SEG277 [133] call mul8u - //SEG278 [149] phi from mul8s to mul8u [phi:mul8s->mul8u] + //SEG278 [147] phi from mul8s to mul8u [phi:mul8s->mul8u] mul8u_from_mul8s: - //SEG279 [149] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8s->mul8u#0] -- register_copy - //SEG280 [149] phi (byte) mul8u::b#2 = (byte~) mul8u::b#3 [phi:mul8s->mul8u#1] -- register_copy + //SEG279 [147] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8s->mul8u#0] -- register_copy + //SEG280 [147] phi (byte) mul8u::b#2 = (byte~) mul8u::b#3 [phi:mul8s->mul8u#1] -- register_copy jsr mul8u //SEG281 [134] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 lda mul8u.res @@ -5785,112 +5755,106 @@ mul8s: { jmp b3 //SEG285 mul8s::@3 b3: - //SEG286 [137] (byte~) mul8s::$5 ← > (word) mul8s::m#0 -- vbuz1=_hi_vwuz2 - lda m+1 - sta _5 - //SEG287 [138] (byte~) mul8s::$6 ← > (word) mul8s::m#0 -- vbuz1=_hi_vwuz2 + //SEG286 [137] (byte~) mul8s::$6 ← > (word) mul8s::m#0 -- vbuz1=_hi_vwuz2 lda m+1 sta _6 - //SEG288 [139] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG287 [138] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 -- vbuz1=vbuz2_minus_vbuz3 lda _6 sec sbc b sta _16 - //SEG289 [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG288 [139] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuz2 lda _16 sta m+1 - //SEG290 [141] phi from mul8s::@3 mul8s::@6 to mul8s::@1 [phi:mul8s::@3/mul8s::@6->mul8s::@1] + //SEG289 [140] phi from mul8s::@3 mul8s::@6 to mul8s::@1 [phi:mul8s::@3/mul8s::@6->mul8s::@1] b1_from_b3: b1_from_b6: - //SEG291 [141] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@6->mul8s::@1#0] -- register_copy + //SEG290 [140] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@6->mul8s::@1#0] -- register_copy jmp b1 - //SEG292 mul8s::@1 + //SEG291 mul8s::@1 b1: - //SEG293 [142] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 -- vbsz1_ge_0_then_la1 + //SEG292 [141] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 -- vbsz1_ge_0_then_la1 lda b cmp #0 bpl b2_from_b1 jmp b4 - //SEG294 mul8s::@4 + //SEG293 mul8s::@4 b4: - //SEG295 [143] (byte~) mul8s::$11 ← > (word) mul8s::m#5 -- vbuz1=_hi_vwuz2 - lda m+1 - sta _11 - //SEG296 [144] (byte~) mul8s::$12 ← > (word) mul8s::m#5 -- vbuz1=_hi_vwuz2 + //SEG294 [142] (byte~) mul8s::$12 ← > (word) mul8s::m#5 -- vbuz1=_hi_vwuz2 lda m+1 sta _12 - //SEG297 [145] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG295 [143] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 -- vbuz1=vbuz2_minus_vbuz3 lda _12 sec sbc a sta _17 - //SEG298 [146] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG296 [144] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuz2 lda _17 sta m+1 - //SEG299 [147] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] + //SEG297 [145] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] b2_from_b1: b2_from_b4: - //SEG300 [147] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy + //SEG298 [145] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy jmp b2 - //SEG301 mul8s::@2 + //SEG299 mul8s::@2 b2: jmp breturn - //SEG302 mul8s::@return + //SEG300 mul8s::@return breturn: - //SEG303 [148] return + //SEG301 [146] return rts } -//SEG304 mul8u +//SEG302 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word // mul8u(byte zeropage($15) a, byte zeropage($14) b) mul8u: { - .label _1 = $60 + .label _1 = $5e .label mb = $18 .label a = $15 .label res = $16 .label return = $58 .label b = $14 - .label return_3 = $7c - //SEG305 [150] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuz2 + .label return_3 = $78 + //SEG303 [148] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuz2 lda b sta mb lda #0 sta mb+1 - //SEG306 [151] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG304 [149] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG307 [151] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG308 [151] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG305 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG306 [149] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #<0 sta res lda #>0 sta res+1 - //SEG309 [151] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG307 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG310 mul8u::@1 + //SEG308 mul8u::@1 b1: - //SEG311 [152] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 + //SEG309 [150] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 lda a cmp #0 bne b2 jmp breturn - //SEG312 mul8u::@return + //SEG310 mul8u::@return breturn: - //SEG313 [153] return + //SEG311 [151] return rts - //SEG314 mul8u::@2 + //SEG312 mul8u::@2 b2: - //SEG315 [154] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG313 [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and a sta _1 - //SEG316 [155] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuz1_eq_0_then_la1 + //SEG314 [153] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b4_from_b2 jmp b7 - //SEG317 mul8u::@7 + //SEG315 mul8u::@7 b7: - //SEG318 [156] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG316 [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -5898,184 +5862,176 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG319 [157] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG317 [155] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] b4_from_b2: b4_from_b7: - //SEG320 [157] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG318 [155] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy jmp b4 - //SEG321 mul8u::@4 + //SEG319 mul8u::@4 b4: - //SEG322 [158] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG320 [156] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 lsr a - //SEG323 [159] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG321 [157] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG324 [151] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG322 [149] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] b1_from_b4: - //SEG325 [151] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG326 [151] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG327 [151] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG323 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG324 [149] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG325 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG328 mulf8s +//SEG326 mulf8s // Fast multiply two signed bytes to a word result // mulf8s(signed byte zeropage($42) a, signed byte zeropage($43) b) mulf8s: { - .label return = $64 + .label return = $62 .label a = $42 .label b = $43 .label return_2 = $44 jmp mulf8s_prepare1 - //SEG329 mulf8s::mulf8s_prepare1 + //SEG327 mulf8s::mulf8s_prepare1 mulf8s_prepare1: - //SEG330 [161] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 -- vbuz1=vbuz2 + //SEG328 [159] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 -- vbuz1=vbuz2 lda a sta mulf8u_prepare.a - //SEG331 [162] call mulf8u_prepare - //SEG332 [190] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] + //SEG329 [160] call mulf8u_prepare + //SEG330 [186] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] mulf8u_prepare_from_mulf8s_prepare1: - //SEG333 [190] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy + //SEG331 [186] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare jmp b2 - //SEG334 mulf8s::@2 + //SEG332 mulf8s::@2 b2: - //SEG335 [163] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsz2 + //SEG333 [161] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsz2 lda b sta mulf8s_prepared.b - //SEG336 [164] call mulf8s_prepared + //SEG334 [162] call mulf8s_prepared jsr mulf8s_prepared - //SEG337 [165] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 -- vwsz1=vwsz2 + //SEG335 [163] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 -- vwsz1=vwsz2 lda mulf8s_prepared.m sta mulf8s_prepared.return lda mulf8s_prepared.m+1 sta mulf8s_prepared.return+1 jmp b4 - //SEG338 mulf8s::@4 + //SEG336 mulf8s::@4 b4: - //SEG339 [166] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 -- vwsz1=vwsz2 + //SEG337 [164] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 -- vwsz1=vwsz2 lda mulf8s_prepared.return sta return lda mulf8s_prepared.return+1 sta return+1 jmp breturn - //SEG340 mulf8s::@return + //SEG338 mulf8s::@return breturn: - //SEG341 [167] return + //SEG339 [165] return rts } -//SEG342 mulf8s_prepared +//SEG340 mulf8s_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8s_prepare(byte a) -// mulf8s_prepared(signed byte zeropage($61) b) +// mulf8s_prepared(signed byte zeropage($5f) b) mulf8s_prepared: { .label memA = $fd - .label _4 = $68 - .label _5 = $69 - .label _10 = $6b - .label _11 = $6c - .label _15 = $6a - .label _16 = $6d + .label _5 = $66 + .label _11 = $68 + .label _15 = $67 + .label _16 = $69 .label m = $1a - .label b = $61 - .label return = $62 - //SEG343 [168] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuz1=vbuz2 + .label b = $5f + .label return = $60 + //SEG341 [166] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuz1=vbuz2 lda b sta mulf8u_prepared.b - //SEG344 [169] call mulf8u_prepared - //SEG345 [185] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] + //SEG342 [167] call mulf8u_prepared + //SEG343 [181] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] mulf8u_prepared_from_mulf8s_prepared: - //SEG346 [185] phi (byte) mulf8u_prepared::b#2 = (byte~) mulf8u_prepared::b#3 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy + //SEG344 [181] phi (byte) mulf8u_prepared::b#2 = (byte~) mulf8u_prepared::b#3 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG347 [170] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 -- vwuz1=vwuz2 + //SEG345 [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 -- vwuz1=vwuz2 lda mulf8u_prepared.return sta mulf8u_prepared.return_3 lda mulf8u_prepared.return+1 sta mulf8u_prepared.return_3+1 jmp b6 - //SEG348 mulf8s_prepared::@6 + //SEG346 mulf8s_prepared::@6 b6: - //SEG349 [171] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 -- vwuz1=vwuz2 + //SEG347 [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 -- vwuz1=vwuz2 lda mulf8u_prepared.return_3 sta m lda mulf8u_prepared.return_3+1 sta m+1 - //SEG350 [172] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 + //SEG348 [170] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 lda memA cmp #0 bpl b1_from_b6 jmp b3 - //SEG351 mulf8s_prepared::@3 + //SEG349 mulf8s_prepared::@3 b3: - //SEG352 [173] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 -- vbuz1=_hi_vwuz2 - lda m+1 - sta _4 - //SEG353 [174] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuz1=_hi_vwuz2 + //SEG350 [171] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuz1=_hi_vwuz2 lda m+1 sta _5 - //SEG354 [175] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG351 [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuz1=vbuz2_minus_vbuz3 lda _5 sec sbc b sta _15 - //SEG355 [176] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG352 [173] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuz2 lda _15 sta m+1 - //SEG356 [177] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] + //SEG353 [174] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] b1_from_b3: b1_from_b6: - //SEG357 [177] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy + //SEG354 [174] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy jmp b1 - //SEG358 mulf8s_prepared::@1 + //SEG355 mulf8s_prepared::@1 b1: - //SEG359 [178] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 + //SEG356 [175] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 lda b cmp #0 bpl b2_from_b1 jmp b4 - //SEG360 mulf8s_prepared::@4 + //SEG357 mulf8s_prepared::@4 b4: - //SEG361 [179] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 -- vbuz1=_hi_vwuz2 - lda m+1 - sta _10 - //SEG362 [180] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuz1=_hi_vwuz2 + //SEG358 [176] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuz1=_hi_vwuz2 lda m+1 sta _11 - //SEG363 [181] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuz1=vbuz2_minus__deref_pbuc1 + //SEG359 [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuz1=vbuz2_minus__deref_pbuc1 lda _11 sec sbc memA sta _16 - //SEG364 [182] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG360 [178] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuz2 lda _16 sta m+1 - //SEG365 [183] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] + //SEG361 [179] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] b2_from_b1: b2_from_b4: - //SEG366 [183] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy + //SEG362 [179] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy jmp b2 - //SEG367 mulf8s_prepared::@2 + //SEG363 mulf8s_prepared::@2 b2: jmp breturn - //SEG368 mulf8s_prepared::@return + //SEG364 mulf8s_prepared::@return breturn: - //SEG369 [184] return + //SEG365 [180] return rts } -//SEG370 mulf8u_prepared +//SEG366 mulf8u_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8u_prepare(byte a) // mulf8u_prepared(byte zeropage($1c) b) mulf8u_prepared: { .label resL = $fe .label memB = $ff - .label return = $6e + .label return = $6a .label b = $1c - .label return_2 = $88 - .label return_3 = $66 - //SEG371 [186] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuz1 + .label return_2 = $84 + .label return_3 = $64 + //SEG367 [182] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuz1 lda b sta memB - //SEG372 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } + //SEG368 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } ldx memB sec sm1: @@ -6088,27 +6044,27 @@ mulf8u_prepared: { sm4: sbc mulf_sqr2_hi,x sta memB - //SEG373 [188] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG369 [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda resL sta return lda memB sta return+1 jmp breturn - //SEG374 mulf8u_prepared::@return + //SEG370 mulf8u_prepared::@return breturn: - //SEG375 [189] return + //SEG371 [185] return rts } -//SEG376 mulf8u_prepare +//SEG372 mulf8u_prepare // Prepare for fast multiply with an unsigned byte to a word result // mulf8u_prepare(byte zeropage($1d) a) mulf8u_prepare: { .label memA = $fd .label a = $1d - //SEG377 [191] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuz1 + //SEG373 [187] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuz1 lda a sta memA - //SEG378 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } + //SEG374 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } lda memA sta mulf8u_prepared.sm1+1 sta mulf8u_prepared.sm3+1 @@ -6116,12 +6072,12 @@ mulf8u_prepare: { sta mulf8u_prepared.sm2+1 sta mulf8u_prepared.sm4+1 jmp breturn - //SEG379 mulf8u_prepare::@return + //SEG375 mulf8u_prepare::@return breturn: - //SEG380 [193] return + //SEG376 [189] return rts } -//SEG381 muls8s +//SEG377 muls8s // Slow multiplication of signed bytes // Perform a signed multiplication by repeated addition/subtraction // muls8s(signed byte zeropage($3c) a, signed byte zeropage($3d) b) @@ -6133,35 +6089,35 @@ muls8s: { .label a = $3c .label b = $3d .label return_2 = $3e - //SEG382 [194] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 -- vbsz1_lt_0_then_la1 + //SEG378 [190] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 -- vbsz1_lt_0_then_la1 lda a bmi b5_from_muls8s jmp b6 - //SEG383 muls8s::@6 + //SEG379 muls8s::@6 b6: - //SEG384 [195] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 -- vbsz1_le_0_then_la1 + //SEG380 [191] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 -- vbsz1_le_0_then_la1 lda a cmp #1 bmi b4_from_b6 - //SEG385 [196] phi from muls8s::@6 to muls8s::@3 [phi:muls8s::@6->muls8s::@3] + //SEG381 [192] phi from muls8s::@6 to muls8s::@3 [phi:muls8s::@6->muls8s::@3] b3_from_b6: - //SEG386 [196] phi (signed byte) muls8s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#0] -- vbsz1=vbuc1 + //SEG382 [192] phi (signed byte) muls8s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#0] -- vbsz1=vbuc1 lda #0 sta j - //SEG387 [196] phi (signed word) muls8s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#1] -- vwsz1=vbuc1 + //SEG383 [192] phi (signed word) muls8s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#1] -- vwsz1=vbuc1 lda #<0 sta m lda #>0 sta m+1 jmp b3 - //SEG388 [196] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] + //SEG384 [192] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] b3_from_b3: - //SEG389 [196] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy - //SEG390 [196] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy + //SEG385 [192] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy + //SEG386 [192] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy jmp b3 - //SEG391 muls8s::@3 + //SEG387 muls8s::@3 b3: - //SEG392 [197] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsz2 + //SEG388 [193] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsz2 lda b sta $fe ora #$7f @@ -6176,51 +6132,51 @@ muls8s: { lda m+1 adc $ff sta m+1 - //SEG393 [198] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsz1=_inc_vbsz1 + //SEG389 [194] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsz1=_inc_vbsz1 inc j - //SEG394 [199] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsz1_neq_vbsz2_then_la1 + //SEG390 [195] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsz1_neq_vbsz2_then_la1 lda j cmp a bne b3_from_b3 - //SEG395 [200] phi from muls8s::@3 muls8s::@5 to muls8s::@4 [phi:muls8s::@3/muls8s::@5->muls8s::@4] + //SEG391 [196] phi from muls8s::@3 muls8s::@5 to muls8s::@4 [phi:muls8s::@3/muls8s::@5->muls8s::@4] b4_from_b3: b4_from_b5: - //SEG396 [200] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@5->muls8s::@4#0] -- register_copy + //SEG392 [196] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@5->muls8s::@4#0] -- register_copy jmp b4 - //SEG397 [200] phi from muls8s::@6 to muls8s::@4 [phi:muls8s::@6->muls8s::@4] + //SEG393 [196] phi from muls8s::@6 to muls8s::@4 [phi:muls8s::@6->muls8s::@4] b4_from_b6: - //SEG398 [200] phi (signed word) muls8s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@4#0] -- vwsz1=vbuc1 + //SEG394 [196] phi (signed word) muls8s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@4#0] -- vwsz1=vbuc1 lda #<0 sta return lda #>0 sta return+1 jmp b4 - //SEG399 muls8s::@4 + //SEG395 muls8s::@4 b4: jmp breturn - //SEG400 muls8s::@return + //SEG396 muls8s::@return breturn: - //SEG401 [201] return + //SEG397 [197] return rts - //SEG402 [202] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5] + //SEG398 [198] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5] b5_from_muls8s: - //SEG403 [202] phi (signed byte) muls8s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#0] -- vbsz1=vbuc1 + //SEG399 [198] phi (signed byte) muls8s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#0] -- vbsz1=vbuc1 lda #0 sta i - //SEG404 [202] phi (signed word) muls8s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#1] -- vwsz1=vbuc1 + //SEG400 [198] phi (signed word) muls8s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#1] -- vwsz1=vbuc1 lda #<0 sta m lda #>0 sta m+1 jmp b5 - //SEG405 [202] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5] + //SEG401 [198] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5] b5_from_b5: - //SEG406 [202] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@5->muls8s::@5#0] -- register_copy - //SEG407 [202] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@5->muls8s::@5#1] -- register_copy + //SEG402 [198] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@5->muls8s::@5#0] -- register_copy + //SEG403 [198] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@5->muls8s::@5#1] -- register_copy jmp b5 - //SEG408 muls8s::@5 + //SEG404 muls8s::@5 b5: - //SEG409 [203] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsz2 + //SEG405 [199] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsz2 lda b sta $fe ora #$7f @@ -6235,115 +6191,115 @@ muls8s: { lda m+1 sbc $ff sta m+1 - //SEG410 [204] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsz1=_dec_vbsz1 + //SEG406 [200] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsz1=_dec_vbsz1 dec i - //SEG411 [205] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 -- vbsz1_neq_vbsz2_then_la1 + //SEG407 [201] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 -- vbsz1_neq_vbsz2_then_la1 lda i cmp a bne b5_from_b5 jmp b4_from_b5 } -//SEG412 mul8u_compare +//SEG408 mul8u_compare // Perform all possible byte multiplications (slow and fast) and compare the results mul8u_compare: { - .label ms = $74 - .label mf = $7a - .label mn = $7e + .label ms = $70 + .label mf = $76 + .label mn = $7a .label b = $23 .label a = $22 .label ok = $24 - //SEG413 [207] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] + //SEG409 [203] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] b1_from_mul8u_compare: - //SEG414 [207] phi (byte) mul8u_compare::a#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 + //SEG410 [203] phi (byte) mul8u_compare::a#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta a jmp b1 - //SEG415 [207] phi from mul8u_compare::@10 to mul8u_compare::@1 [phi:mul8u_compare::@10->mul8u_compare::@1] + //SEG411 [203] phi from mul8u_compare::@10 to mul8u_compare::@1 [phi:mul8u_compare::@10->mul8u_compare::@1] b1_from_b10: - //SEG416 [207] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@10->mul8u_compare::@1#0] -- register_copy + //SEG412 [203] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@10->mul8u_compare::@1#0] -- register_copy jmp b1 - //SEG417 mul8u_compare::@1 + //SEG413 mul8u_compare::@1 b1: - //SEG418 [208] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] + //SEG414 [204] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] b2_from_b1: - //SEG419 [208] phi (byte) mul8u_compare::b#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 + //SEG415 [204] phi (byte) mul8u_compare::b#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 lda #0 sta b jmp b2 - //SEG420 [208] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] + //SEG416 [204] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] b2_from_b5: - //SEG421 [208] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy + //SEG417 [204] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy jmp b2 - //SEG422 mul8u_compare::@2 + //SEG418 mul8u_compare::@2 b2: - //SEG423 [209] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 + //SEG419 [205] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 lda a sta muls8u.a - //SEG424 [210] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 + //SEG420 [206] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 lda b sta muls8u.b - //SEG425 [211] call muls8u + //SEG421 [207] call muls8u jsr muls8u - //SEG426 [212] (word) muls8u::return#2 ← (word) muls8u::return#0 -- vwuz1=vwuz2 + //SEG422 [208] (word) muls8u::return#2 ← (word) muls8u::return#0 -- vwuz1=vwuz2 lda muls8u.return sta muls8u.return_2 lda muls8u.return+1 sta muls8u.return_2+1 jmp b12 - //SEG427 mul8u_compare::@12 + //SEG423 mul8u_compare::@12 b12: - //SEG428 [213] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 -- vwuz1=vwuz2 + //SEG424 [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 -- vwuz1=vwuz2 lda muls8u.return_2 sta ms lda muls8u.return_2+1 sta ms+1 - //SEG429 [214] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 + //SEG425 [210] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 lda a sta mulf8u.a - //SEG430 [215] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 + //SEG426 [211] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 lda b sta mulf8u.b - //SEG431 [216] call mulf8u + //SEG427 [212] call mulf8u jsr mulf8u - //SEG432 [217] (word) mulf8u::return#2 ← (word) mulf8u::return#0 -- vwuz1=vwuz2 + //SEG428 [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0 -- vwuz1=vwuz2 lda mulf8u.return sta mulf8u.return_2 lda mulf8u.return+1 sta mulf8u.return_2+1 jmp b13 - //SEG433 mul8u_compare::@13 + //SEG429 mul8u_compare::@13 b13: - //SEG434 [218] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 -- vwuz1=vwuz2 + //SEG430 [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 -- vwuz1=vwuz2 lda mulf8u.return_2 sta mf lda mulf8u.return_2+1 sta mf+1 - //SEG435 [219] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 + //SEG431 [215] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 lda a sta mul8u.a - //SEG436 [220] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 + //SEG432 [216] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 lda b sta mul8u.b - //SEG437 [221] call mul8u - //SEG438 [149] phi from mul8u_compare::@13 to mul8u [phi:mul8u_compare::@13->mul8u] + //SEG433 [217] call mul8u + //SEG434 [147] phi from mul8u_compare::@13 to mul8u [phi:mul8u_compare::@13->mul8u] mul8u_from_b13: - //SEG439 [149] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@13->mul8u#0] -- register_copy - //SEG440 [149] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mul8u_compare::@13->mul8u#1] -- register_copy + //SEG435 [147] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@13->mul8u#0] -- register_copy + //SEG436 [147] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mul8u_compare::@13->mul8u#1] -- register_copy jsr mul8u - //SEG441 [222] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG437 [218] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 lda mul8u.res sta mul8u.return_3 lda mul8u.res+1 sta mul8u.return_3+1 jmp b14 - //SEG442 mul8u_compare::@14 + //SEG438 mul8u_compare::@14 b14: - //SEG443 [223] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 -- vwuz1=vwuz2 + //SEG439 [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 -- vwuz1=vwuz2 lda mul8u.return_3 sta mn lda mul8u.return_3+1 sta mn+1 - //SEG444 [224] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 + //SEG440 [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 lda ms cmp mf bne !+ @@ -6351,26 +6307,26 @@ mul8u_compare: { cmp mf+1 beq b3_from_b14 !: - //SEG445 [225] phi from mul8u_compare::@14 to mul8u_compare::@6 [phi:mul8u_compare::@14->mul8u_compare::@6] + //SEG441 [221] phi from mul8u_compare::@14 to mul8u_compare::@6 [phi:mul8u_compare::@14->mul8u_compare::@6] b6_from_b14: jmp b6 - //SEG446 mul8u_compare::@6 + //SEG442 mul8u_compare::@6 b6: - //SEG447 [226] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] + //SEG443 [222] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] b3_from_b6: - //SEG448 [226] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuz1=vbuc1 + //SEG444 [222] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuz1=vbuc1 lda #0 sta ok jmp b3 - //SEG449 [226] phi from mul8u_compare::@14 to mul8u_compare::@3 [phi:mul8u_compare::@14->mul8u_compare::@3] + //SEG445 [222] phi from mul8u_compare::@14 to mul8u_compare::@3 [phi:mul8u_compare::@14->mul8u_compare::@3] b3_from_b14: - //SEG450 [226] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8u_compare::@14->mul8u_compare::@3#0] -- vbuz1=vbuc1 + //SEG446 [222] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8u_compare::@14->mul8u_compare::@3#0] -- vbuz1=vbuc1 lda #1 sta ok jmp b3 - //SEG451 mul8u_compare::@3 + //SEG447 mul8u_compare::@3 b3: - //SEG452 [227] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 -- vwuz1_eq_vwuz2_then_la1 + //SEG448 [223] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 -- vwuz1_eq_vwuz2_then_la1 lda ms cmp mn bne !+ @@ -6378,351 +6334,351 @@ mul8u_compare: { cmp mn+1 beq b20_from_b3 !: - //SEG453 [228] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] + //SEG449 [224] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] b4_from_b3: - //SEG454 [228] phi (byte) mul8u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuz1=vbuc1 + //SEG450 [224] phi (byte) mul8u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuz1=vbuc1 lda #0 sta ok jmp b4 - //SEG455 mul8u_compare::@4 + //SEG451 mul8u_compare::@4 b4: - //SEG456 [229] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 -- vbuz1_neq_0_then_la1 + //SEG452 [225] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 -- vbuz1_neq_0_then_la1 lda ok cmp #0 bne b5 jmp b8 - //SEG457 mul8u_compare::@8 + //SEG453 mul8u_compare::@8 b8: - //SEG458 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG454 [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG459 [231] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 + //SEG455 [227] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 lda a sta mul8u_error.a - //SEG460 [232] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 + //SEG456 [228] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 lda b sta mul8u_error.b - //SEG461 [233] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 -- vwuz1=vwuz2 + //SEG457 [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 -- vwuz1=vwuz2 lda ms sta mul8u_error.ms lda ms+1 sta mul8u_error.ms+1 - //SEG462 [234] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 -- vwuz1=vwuz2 + //SEG458 [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 -- vwuz1=vwuz2 lda mn sta mul8u_error.mn lda mn+1 sta mul8u_error.mn+1 - //SEG463 [235] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 -- vwuz1=vwuz2 + //SEG459 [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 -- vwuz1=vwuz2 lda mf sta mul8u_error.mf lda mf+1 sta mul8u_error.mf+1 - //SEG464 [236] call mul8u_error - //SEG465 [247] phi from mul8u_compare::@8 to mul8u_error [phi:mul8u_compare::@8->mul8u_error] + //SEG460 [232] call mul8u_error + //SEG461 [243] phi from mul8u_compare::@8 to mul8u_error [phi:mul8u_compare::@8->mul8u_error] mul8u_error_from_b8: jsr mul8u_error jmp breturn - //SEG466 mul8u_compare::@return + //SEG462 mul8u_compare::@return breturn: - //SEG467 [237] return + //SEG463 [233] return rts - //SEG468 mul8u_compare::@5 + //SEG464 mul8u_compare::@5 b5: - //SEG469 [238] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 + //SEG465 [234] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 inc b - //SEG470 [239] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 + //SEG466 [235] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 lda b cmp #0 bne b2_from_b5 jmp b10 - //SEG471 mul8u_compare::@10 + //SEG467 mul8u_compare::@10 b10: - //SEG472 [240] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 + //SEG468 [236] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 inc a - //SEG473 [241] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 + //SEG469 [237] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 lda a cmp #0 bne b1_from_b10 - //SEG474 [242] phi from mul8u_compare::@10 to mul8u_compare::@11 [phi:mul8u_compare::@10->mul8u_compare::@11] + //SEG470 [238] phi from mul8u_compare::@10 to mul8u_compare::@11 [phi:mul8u_compare::@10->mul8u_compare::@11] b11_from_b10: jmp b11 - //SEG475 mul8u_compare::@11 + //SEG471 mul8u_compare::@11 b11: - //SEG476 [243] call print_str - //SEG477 [63] phi from mul8u_compare::@11 to print_str [phi:mul8u_compare::@11->print_str] + //SEG472 [239] call print_str + //SEG473 [63] phi from mul8u_compare::@11 to print_str [phi:mul8u_compare::@11->print_str] print_str_from_b11: - //SEG478 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_compare::@11->print_str#0] -- register_copy - //SEG479 [63] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@11->print_str#1] -- pbuz1=pbuc1 + //SEG474 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_compare::@11->print_str#0] -- register_copy + //SEG475 [63] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@11->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG480 [244] phi from mul8u_compare::@11 to mul8u_compare::@16 [phi:mul8u_compare::@11->mul8u_compare::@16] + //SEG476 [240] phi from mul8u_compare::@11 to mul8u_compare::@16 [phi:mul8u_compare::@11->mul8u_compare::@16] b16_from_b11: jmp b16 - //SEG481 mul8u_compare::@16 + //SEG477 mul8u_compare::@16 b16: - //SEG482 [245] call print_ln - //SEG483 [58] phi from mul8u_compare::@16 to print_ln [phi:mul8u_compare::@16->print_ln] + //SEG478 [241] call print_ln + //SEG479 [58] phi from mul8u_compare::@16 to print_ln [phi:mul8u_compare::@16->print_ln] print_ln_from_b16: - //SEG484 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8u_compare::@16->print_ln#0] -- register_copy - //SEG485 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_compare::@16->print_ln#1] -- register_copy + //SEG480 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8u_compare::@16->print_ln#0] -- register_copy + //SEG481 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_compare::@16->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG486 [246] phi from mul8u_compare::@3 to mul8u_compare::@20 [phi:mul8u_compare::@3->mul8u_compare::@20] + //SEG482 [242] phi from mul8u_compare::@3 to mul8u_compare::@20 [phi:mul8u_compare::@3->mul8u_compare::@20] b20_from_b3: jmp b20 - //SEG487 mul8u_compare::@20 + //SEG483 mul8u_compare::@20 b20: - //SEG488 [228] phi from mul8u_compare::@20 to mul8u_compare::@4 [phi:mul8u_compare::@20->mul8u_compare::@4] + //SEG484 [224] phi from mul8u_compare::@20 to mul8u_compare::@4 [phi:mul8u_compare::@20->mul8u_compare::@4] b4_from_b20: - //SEG489 [228] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@20->mul8u_compare::@4#0] -- register_copy + //SEG485 [224] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@20->mul8u_compare::@4#0] -- register_copy jmp b4 str: .text "multiply results match!@" } -//SEG490 mul8u_error -// mul8u_error(byte zeropage($80) a, byte zeropage($81) b, word zeropage($82) ms, word zeropage($84) mn, word zeropage($86) mf) +//SEG486 mul8u_error +// mul8u_error(byte zeropage($7c) a, byte zeropage($7d) b, word zeropage($7e) ms, word zeropage($80) mn, word zeropage($82) mf) mul8u_error: { - .label a = $80 - .label b = $81 - .label ms = $82 - .label mn = $84 - .label mf = $86 - //SEG491 [248] call print_str - //SEG492 [63] phi from mul8u_error to print_str [phi:mul8u_error->print_str] + .label a = $7c + .label b = $7d + .label ms = $7e + .label mn = $80 + .label mf = $82 + //SEG487 [244] call print_str + //SEG488 [63] phi from mul8u_error to print_str [phi:mul8u_error->print_str] print_str_from_mul8u_error: - //SEG493 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_error->print_str#0] -- register_copy - //SEG494 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 + //SEG489 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_error->print_str#0] -- register_copy + //SEG490 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b1 - //SEG495 mul8u_error::@1 + //SEG491 mul8u_error::@1 b1: - //SEG496 [249] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 -- vbuz1=vbuz2 + //SEG492 [245] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 -- vbuz1=vbuz2 lda a sta print_byte.b - //SEG497 [250] call print_byte - //SEG498 [108] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] + //SEG493 [246] call print_byte + //SEG494 [108] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] print_byte_from_b1: - //SEG499 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@1->print_byte#0] -- register_copy - //SEG500 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy + //SEG495 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@1->print_byte#0] -- register_copy + //SEG496 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy jsr print_byte - //SEG501 [251] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] + //SEG497 [247] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] b2_from_b1: jmp b2 - //SEG502 mul8u_error::@2 + //SEG498 mul8u_error::@2 b2: - //SEG503 [252] call print_str - //SEG504 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] + //SEG499 [248] call print_str + //SEG500 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] print_str_from_b2: - //SEG505 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy - //SEG506 [63] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG501 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy + //SEG502 [63] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b3 - //SEG507 mul8u_error::@3 + //SEG503 mul8u_error::@3 b3: - //SEG508 [253] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuz1=vbuz2 + //SEG504 [249] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuz1=vbuz2 lda b sta print_byte.b - //SEG509 [254] call print_byte - //SEG510 [108] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] + //SEG505 [250] call print_byte + //SEG506 [108] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] print_byte_from_b3: - //SEG511 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@3->print_byte#0] -- register_copy - //SEG512 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy + //SEG507 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@3->print_byte#0] -- register_copy + //SEG508 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy jsr print_byte - //SEG513 [255] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] + //SEG509 [251] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] b4_from_b3: jmp b4 - //SEG514 mul8u_error::@4 + //SEG510 mul8u_error::@4 b4: - //SEG515 [256] call print_str - //SEG516 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] + //SEG511 [252] call print_str + //SEG512 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] print_str_from_b4: - //SEG517 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy - //SEG518 [63] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG513 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy + //SEG514 [63] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b5 - //SEG519 mul8u_error::@5 + //SEG515 mul8u_error::@5 b5: - //SEG520 [257] (word) print_word::w#3 ← (word) mul8u_error::ms#0 -- vwuz1=vwuz2 + //SEG516 [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0 -- vwuz1=vwuz2 lda ms sta print_word.w lda ms+1 sta print_word.w+1 - //SEG521 [258] call print_word - //SEG522 [102] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] + //SEG517 [254] call print_word + //SEG518 [102] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] print_word_from_b5: - //SEG523 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@5->print_word#0] -- register_copy - //SEG524 [102] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy + //SEG519 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@5->print_word#0] -- register_copy + //SEG520 [102] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy jsr print_word - //SEG525 [259] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] + //SEG521 [255] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] b6_from_b5: jmp b6 - //SEG526 mul8u_error::@6 + //SEG522 mul8u_error::@6 b6: - //SEG527 [260] call print_str - //SEG528 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] + //SEG523 [256] call print_str + //SEG524 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] print_str_from_b6: - //SEG529 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy - //SEG530 [63] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG525 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy + //SEG526 [63] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str jmp b7 - //SEG531 mul8u_error::@7 + //SEG527 mul8u_error::@7 b7: - //SEG532 [261] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 + //SEG528 [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 lda mn sta print_word.w lda mn+1 sta print_word.w+1 - //SEG533 [262] call print_word - //SEG534 [102] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] + //SEG529 [258] call print_word + //SEG530 [102] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] print_word_from_b7: - //SEG535 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@7->print_word#0] -- register_copy - //SEG536 [102] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy + //SEG531 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@7->print_word#0] -- register_copy + //SEG532 [102] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy jsr print_word - //SEG537 [263] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] + //SEG533 [259] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] b8_from_b7: jmp b8 - //SEG538 mul8u_error::@8 + //SEG534 mul8u_error::@8 b8: - //SEG539 [264] call print_str - //SEG540 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] + //SEG535 [260] call print_str + //SEG536 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] print_str_from_b8: - //SEG541 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy - //SEG542 [63] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG537 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy + //SEG538 [63] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str jmp b9 - //SEG543 mul8u_error::@9 + //SEG539 mul8u_error::@9 b9: - //SEG544 [265] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 + //SEG540 [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 lda mf sta print_word.w lda mf+1 sta print_word.w+1 - //SEG545 [266] call print_word - //SEG546 [102] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] + //SEG541 [262] call print_word + //SEG542 [102] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] print_word_from_b9: - //SEG547 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@9->print_word#0] -- register_copy - //SEG548 [102] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy + //SEG543 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@9->print_word#0] -- register_copy + //SEG544 [102] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy jsr print_word - //SEG549 [267] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] + //SEG545 [263] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] b10_from_b9: jmp b10 - //SEG550 mul8u_error::@10 + //SEG546 mul8u_error::@10 b10: - //SEG551 [268] call print_ln - //SEG552 [58] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] + //SEG547 [264] call print_ln + //SEG548 [58] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] print_ln_from_b10: - //SEG553 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8u_error::@10->print_ln#0] -- register_copy - //SEG554 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_error::@10->print_ln#1] -- register_copy + //SEG549 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8u_error::@10->print_ln#0] -- register_copy + //SEG550 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_error::@10->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG555 mul8u_error::@return + //SEG551 mul8u_error::@return breturn: - //SEG556 [269] return + //SEG552 [265] return rts str: .text "multiply mismatch @" } -//SEG557 mulf8u +//SEG553 mulf8u // Fast multiply two unsigned bytes to a word result -// mulf8u(byte zeropage($76) a, byte zeropage($77) b) +// mulf8u(byte zeropage($72) a, byte zeropage($73) b) mulf8u: { - .label return = $8a - .label a = $76 - .label b = $77 - .label return_2 = $78 - //SEG558 [270] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 -- vbuz1=vbuz2 + .label return = $86 + .label a = $72 + .label b = $73 + .label return_2 = $74 + //SEG554 [266] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 -- vbuz1=vbuz2 lda a sta mulf8u_prepare.a - //SEG559 [271] call mulf8u_prepare - //SEG560 [190] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] + //SEG555 [267] call mulf8u_prepare + //SEG556 [186] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] mulf8u_prepare_from_mulf8u: - //SEG561 [190] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy + //SEG557 [186] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare jmp b2 - //SEG562 mulf8u::@2 + //SEG558 mulf8u::@2 b2: - //SEG563 [272] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 -- vbuz1=vbuz2 + //SEG559 [268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 -- vbuz1=vbuz2 lda b sta mulf8u_prepared.b - //SEG564 [273] call mulf8u_prepared - //SEG565 [185] phi from mulf8u::@2 to mulf8u_prepared [phi:mulf8u::@2->mulf8u_prepared] + //SEG560 [269] call mulf8u_prepared + //SEG561 [181] phi from mulf8u::@2 to mulf8u_prepared [phi:mulf8u::@2->mulf8u_prepared] mulf8u_prepared_from_b2: - //SEG566 [185] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@2->mulf8u_prepared#0] -- register_copy + //SEG562 [181] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@2->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG567 [274] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 -- vwuz1=vwuz2 + //SEG563 [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 -- vwuz1=vwuz2 lda mulf8u_prepared.return sta mulf8u_prepared.return_2 lda mulf8u_prepared.return+1 sta mulf8u_prepared.return_2+1 jmp b3 - //SEG568 mulf8u::@3 + //SEG564 mulf8u::@3 b3: - //SEG569 [275] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 -- vwuz1=vwuz2 + //SEG565 [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 -- vwuz1=vwuz2 lda mulf8u_prepared.return_2 sta return lda mulf8u_prepared.return_2+1 sta return+1 jmp breturn - //SEG570 mulf8u::@return + //SEG566 mulf8u::@return breturn: - //SEG571 [276] return + //SEG567 [272] return rts } -//SEG572 muls8u +//SEG568 muls8u // Slow multiplication of unsigned bytes // Calculate an unsigned multiplication by repeated addition -// muls8u(byte zeropage($70) a, byte zeropage($71) b) +// muls8u(byte zeropage($6c) a, byte zeropage($6d) b) muls8u: { .label return = $26 .label m = $26 .label i = $25 - .label a = $70 - .label b = $71 - .label return_2 = $72 - //SEG573 [277] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 + .label a = $6c + .label b = $6d + .label return_2 = $6e + //SEG569 [273] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 lda a cmp #0 beq b1_from_muls8u - //SEG574 [278] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] + //SEG570 [274] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] b2_from_muls8u: - //SEG575 [278] phi (byte) muls8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#0] -- vbuz1=vbuc1 + //SEG571 [274] phi (byte) muls8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG576 [278] phi (word) muls8u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 + //SEG572 [274] phi (word) muls8u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 lda #<0 sta m lda #>0 sta m+1 jmp b2 - //SEG577 [278] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] + //SEG573 [274] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] b2_from_b2: - //SEG578 [278] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy - //SEG579 [278] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy + //SEG574 [274] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy + //SEG575 [274] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy jmp b2 - //SEG580 muls8u::@2 + //SEG576 muls8u::@2 b2: - //SEG581 [279] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuz2 + //SEG577 [275] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuz2 lda b clc adc m @@ -6730,153 +6686,153 @@ muls8u: { lda #0 adc m+1 sta m+1 - //SEG582 [280] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuz1=_inc_vbuz1 + //SEG578 [276] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG583 [281] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuz1_neq_vbuz2_then_la1 + //SEG579 [277] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuz1_neq_vbuz2_then_la1 lda i cmp a bne b2_from_b2 - //SEG584 [282] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] + //SEG580 [278] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] b1_from_b2: - //SEG585 [282] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy + //SEG581 [278] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy jmp b1 - //SEG586 [282] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] + //SEG582 [278] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] b1_from_muls8u: - //SEG587 [282] phi (word) muls8u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 + //SEG583 [278] phi (word) muls8u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 lda #<0 sta return lda #>0 sta return+1 jmp b1 - //SEG588 muls8u::@1 + //SEG584 muls8u::@1 b1: jmp breturn - //SEG589 muls8u::@return + //SEG585 muls8u::@return breturn: - //SEG590 [283] return + //SEG586 [279] return rts } -//SEG591 mulf_tables_cmp +//SEG587 mulf_tables_cmp // Compare the ASM-based mul tables with the KC-based mul tables // Red screen on failure - green on success mulf_tables_cmp: { .label asm_sqr = $2a .label kc_sqr = $28 - //SEG592 [285] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] + //SEG588 [281] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] b1_from_mulf_tables_cmp: - //SEG593 [285] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[512]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 + //SEG589 [281] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[512]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 lda #mula_sqr1_lo sta asm_sqr+1 - //SEG594 [285] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[512]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 + //SEG590 [281] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[512]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_lo sta kc_sqr+1 jmp b1 - //SEG595 [285] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1] + //SEG591 [281] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1] b1_from_b2: - //SEG596 [285] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#0] -- register_copy - //SEG597 [285] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#1] -- register_copy + //SEG592 [281] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#0] -- register_copy + //SEG593 [281] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#1] -- register_copy jmp b1 - //SEG598 mulf_tables_cmp::@1 + //SEG594 mulf_tables_cmp::@1 b1: - //SEG599 [286] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 + //SEG595 [282] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 ldy #0 lda (kc_sqr),y ldy #0 cmp (asm_sqr),y beq b2 jmp b3 - //SEG600 mulf_tables_cmp::@3 + //SEG596 mulf_tables_cmp::@3 b3: - //SEG601 [287] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG597 [283] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG602 [288] call print_str - //SEG603 [63] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] + //SEG598 [284] call print_str + //SEG599 [63] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] print_str_from_b3: - //SEG604 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 + //SEG600 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG605 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 + //SEG601 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b6 - //SEG606 mulf_tables_cmp::@6 + //SEG602 mulf_tables_cmp::@6 b6: - //SEG607 [289] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 -- vwuz1=vwuz2 + //SEG603 [285] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 -- vwuz1=vwuz2 lda asm_sqr sta print_word.w lda asm_sqr+1 sta print_word.w+1 - //SEG608 [290] call print_word - //SEG609 [102] phi from mulf_tables_cmp::@6 to print_word [phi:mulf_tables_cmp::@6->print_word] + //SEG604 [286] call print_word + //SEG605 [102] phi from mulf_tables_cmp::@6 to print_word [phi:mulf_tables_cmp::@6->print_word] print_word_from_b6: - //SEG610 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@6->print_word#0] -- register_copy - //SEG611 [102] phi (word) print_word::w#6 = (word~) print_word::w#11 [phi:mulf_tables_cmp::@6->print_word#1] -- register_copy + //SEG606 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@6->print_word#0] -- register_copy + //SEG607 [102] phi (word) print_word::w#6 = (word~) print_word::w#11 [phi:mulf_tables_cmp::@6->print_word#1] -- register_copy jsr print_word - //SEG612 [291] phi from mulf_tables_cmp::@6 to mulf_tables_cmp::@7 [phi:mulf_tables_cmp::@6->mulf_tables_cmp::@7] + //SEG608 [287] phi from mulf_tables_cmp::@6 to mulf_tables_cmp::@7 [phi:mulf_tables_cmp::@6->mulf_tables_cmp::@7] b7_from_b6: jmp b7 - //SEG613 mulf_tables_cmp::@7 + //SEG609 mulf_tables_cmp::@7 b7: - //SEG614 [292] call print_str - //SEG615 [63] phi from mulf_tables_cmp::@7 to print_str [phi:mulf_tables_cmp::@7->print_str] + //SEG610 [288] call print_str + //SEG611 [63] phi from mulf_tables_cmp::@7 to print_str [phi:mulf_tables_cmp::@7->print_str] print_str_from_b7: - //SEG616 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@7->print_str#0] -- register_copy - //SEG617 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@7->print_str#1] -- pbuz1=pbuc1 + //SEG612 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@7->print_str#0] -- register_copy + //SEG613 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@7->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b8 - //SEG618 mulf_tables_cmp::@8 + //SEG614 mulf_tables_cmp::@8 b8: - //SEG619 [293] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 + //SEG615 [289] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 lda kc_sqr sta print_word.w lda kc_sqr+1 sta print_word.w+1 - //SEG620 [294] call print_word - //SEG621 [102] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word] + //SEG616 [290] call print_word + //SEG617 [102] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word] print_word_from_b8: - //SEG622 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy - //SEG623 [102] phi (word) print_word::w#6 = (word~) print_word::w#12 [phi:mulf_tables_cmp::@8->print_word#1] -- register_copy + //SEG618 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy + //SEG619 [102] phi (word) print_word::w#6 = (word~) print_word::w#12 [phi:mulf_tables_cmp::@8->print_word#1] -- register_copy jsr print_word - //SEG624 [295] phi from mulf_tables_cmp::@8 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return] + //SEG620 [291] phi from mulf_tables_cmp::@8 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return] breturn_from_b8: - //SEG625 [295] phi (byte*) print_line_cursor#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 + //SEG621 [291] phi (byte*) print_line_cursor#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG626 [295] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#1] -- register_copy + //SEG622 [291] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#1] -- register_copy jmp breturn - //SEG627 mulf_tables_cmp::@return + //SEG623 mulf_tables_cmp::@return breturn: - //SEG628 [296] return + //SEG624 [292] return rts - //SEG629 mulf_tables_cmp::@2 + //SEG625 mulf_tables_cmp::@2 b2: - //SEG630 [297] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG626 [293] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 inc asm_sqr bne !+ inc asm_sqr+1 !: - //SEG631 [298] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG627 [294] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 inc kc_sqr bne !+ inc kc_sqr+1 !: - //SEG632 [299] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG628 [295] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 -- pbuz1_lt_pbuc1_then_la1 lda kc_sqr+1 cmp #>mulf_sqr1_lo+$200*4 bcc b1_from_b2 @@ -6885,61 +6841,61 @@ mulf_tables_cmp: { cmp #mulf_tables_cmp::@5] + //SEG629 [296] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@5 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@5] b5_from_b2: jmp b5 - //SEG634 mulf_tables_cmp::@5 + //SEG630 mulf_tables_cmp::@5 b5: - //SEG635 [301] call print_str - //SEG636 [63] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str] + //SEG631 [297] call print_str + //SEG632 [63] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str] print_str_from_b5: - //SEG637 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@5->print_str#0] -- pbuz1=pbuc1 + //SEG633 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@5->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG638 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@5->print_str#1] -- pbuz1=pbuc1 + //SEG634 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@5->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG639 [302] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@10 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@10] + //SEG635 [298] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@10 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@10] b10_from_b5: jmp b10 - //SEG640 mulf_tables_cmp::@10 + //SEG636 mulf_tables_cmp::@10 b10: - //SEG641 [303] call print_ln - //SEG642 [58] phi from mulf_tables_cmp::@10 to print_ln [phi:mulf_tables_cmp::@10->print_ln] + //SEG637 [299] call print_ln + //SEG638 [58] phi from mulf_tables_cmp::@10 to print_ln [phi:mulf_tables_cmp::@10->print_ln] print_ln_from_b10: - //SEG643 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@10->print_ln#0] -- register_copy - //SEG644 [58] phi (byte*) print_line_cursor#45 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@10->print_ln#1] -- pbuz1=pbuc1 + //SEG639 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@10->print_ln#0] -- register_copy + //SEG640 [58] phi (byte*) print_line_cursor#45 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@10->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln - //SEG645 [304] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG641 [300] (byte*~) print_char_cursor#225 ← (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 - //SEG646 [295] phi from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return] + //SEG642 [291] phi from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return] breturn_from_b10: - //SEG647 [295] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#0] -- register_copy - //SEG648 [295] phi (byte*) print_char_cursor#31 = (byte*~) print_char_cursor#225 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#1] -- register_copy + //SEG643 [291] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#0] -- register_copy + //SEG644 [291] phi (byte*) print_char_cursor#31 = (byte*~) print_char_cursor#225 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#1] -- register_copy jmp breturn str: .text "multiply table mismatch at @" str1: .text " / @" str2: .text "multiply tables match!@" } -//SEG649 mulf_init_asm +//SEG645 mulf_init_asm // Initialize the multiplication tables using ASM code from // http://codebase64.org/doku.php?id=base:seriously_fast_multiplication mulf_init_asm: { // Ensure the ASM tables are not detected as unused by the optimizer .label mem = $ff - //SEG650 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } + //SEG646 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } ldx #0 txa .byte $c9 @@ -6978,30 +6934,30 @@ mulf_init_asm: { dey inx bne !- - //SEG651 [306] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG647 [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr1_lo sta mem - //SEG652 [307] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG648 [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr1_hi sta mem - //SEG653 [308] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG649 [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr2_lo sta mem - //SEG654 [309] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG650 [305] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr2_hi sta mem jmp breturn - //SEG655 mulf_init_asm::@return + //SEG651 mulf_init_asm::@return breturn: - //SEG656 [310] return + //SEG652 [306] return rts } -//SEG657 mulf_init +//SEG653 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { - .label _2 = $8c - .label _5 = $8d - .label _6 = $8e + .label _2 = $88 + .label _5 = $89 + .label _6 = $8a .label c = $2c .label sqr1_hi = $2f .label sqr = $32 @@ -7011,88 +6967,88 @@ mulf_init: { .label x_255 = $34 .label sqr2_lo = $35 .label dir = $39 - //SEG658 [312] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG654 [308] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //SEG659 [312] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG655 [308] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG660 [312] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG656 [308] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG661 [312] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG657 [308] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG662 [312] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG658 [308] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #<0 sta sqr lda #>0 sta sqr+1 - //SEG663 [312] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuz1=vbuc1 + //SEG659 [308] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuz1=vbuc1 lda #0 sta c jmp b1 - //SEG664 [312] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG660 [308] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //SEG665 [312] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG666 [312] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG667 [312] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG668 [312] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG669 [312] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG661 [308] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG662 [308] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG663 [308] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG664 [308] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG665 [308] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG670 mulf_init::@1 + //SEG666 mulf_init::@1 b1: - //SEG671 [313] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 + //SEG667 [309] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG672 [314] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG668 [310] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and c sta _2 - //SEG673 [315] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuz1_neq_0_then_la1 + //SEG669 [311] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuz1_neq_0_then_la1 lda _2 cmp #0 bne b2_from_b1 jmp b5 - //SEG674 mulf_init::@5 + //SEG670 mulf_init::@5 b5: - //SEG675 [316] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG671 [312] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG676 [317] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG672 [313] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG677 [318] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG673 [314] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] b2_from_b1: b2_from_b5: - //SEG678 [318] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy - //SEG679 [318] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy + //SEG674 [314] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy + //SEG675 [314] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy jmp b2 - //SEG680 mulf_init::@2 + //SEG676 mulf_init::@2 b2: - //SEG681 [319] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 + //SEG677 [315] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 lda sqr sta _5 - //SEG682 [320] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 + //SEG678 [316] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 lda _5 ldy #0 sta (sqr1_lo),y - //SEG683 [321] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 + //SEG679 [317] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 lda sqr+1 sta _6 - //SEG684 [322] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuz2 + //SEG680 [318] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuz2 lda _6 ldy #0 sta (sqr1_hi),y - //SEG685 [323] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG681 [319] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG686 [324] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG682 [320] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -7100,84 +7056,84 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG687 [325] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG683 [321] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG688 [326] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG684 [322] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo cmp #mulf_init::@3] + //SEG685 [323] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] b3_from_b2: - //SEG690 [327] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 + //SEG686 [323] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG691 [327] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 + //SEG687 [323] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG692 [327] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 + //SEG688 [323] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG693 [327] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuz1=vbuc1 + //SEG689 [323] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuz1=vbuc1 lda #-1 sta x_255 jmp b3 - //SEG694 [327] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG690 [323] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] b3_from_b4: - //SEG695 [327] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy - //SEG696 [327] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy - //SEG697 [327] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy - //SEG698 [327] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG691 [323] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG692 [323] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG693 [323] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG694 [323] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy jmp b3 - //SEG699 mulf_init::@3 + //SEG695 mulf_init::@3 b3: - //SEG700 [328] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG696 [324] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy x_255 lda mulf_sqr1_lo,y ldy #0 sta (sqr2_lo),y - //SEG701 [329] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG697 [325] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy x_255 lda mulf_sqr1_hi,y ldy #0 sta (sqr2_hi),y - //SEG702 [330] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG698 [326] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG703 [331] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG699 [327] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 lda x_255 clc adc dir sta x_255 - //SEG704 [332] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuz1_neq_0_then_la1 + //SEG700 [328] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuz1_neq_0_then_la1 lda x_255 cmp #0 bne b12_from_b3 - //SEG705 [333] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG701 [329] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] b4_from_b3: - //SEG706 [333] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG702 [329] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b4 - //SEG707 mulf_init::@4 + //SEG703 mulf_init::@4 b4: - //SEG708 [334] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG704 [330] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG709 [335] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 + //SEG705 [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b3_from_b4 @@ -7185,58 +7141,58 @@ mulf_init: { cmp #mulf_init::@12] + //SEG711 [335] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] b12_from_b3: jmp b12 - //SEG716 mulf_init::@12 + //SEG712 mulf_init::@12 b12: - //SEG717 [333] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG713 [329] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] b4_from_b12: - //SEG718 [333] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG714 [329] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy jmp b4 } -//SEG719 print_cls +//SEG715 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = $3a - //SEG720 [341] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG716 [337] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG721 [341] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG717 [337] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG722 [341] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG718 [337] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG723 [341] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG719 [337] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG724 print_cls::@1 + //SEG720 print_cls::@1 b1: - //SEG725 [342] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG721 [338] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG726 [343] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG722 [339] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG727 [344] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG723 [340] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -7244,9 +7200,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG728 print_cls::@return + //SEG724 print_cls::@return breturn: - //SEG729 [345] return + //SEG725 [341] return rts } print_hextab: .text "0123456789abcdef" @@ -7301,16 +7257,16 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:79 [ m Statement [45] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0 [ mul8s_compare::mf#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::mf#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 print_line_cursor#1 ] ) always clobbers reg byte a Statement [46] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 ] ) always clobbers reg byte a Statement [53] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 [ print_char_cursor#192 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ print_char_cursor#192 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [60] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:91 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::print_ln:245 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::mul8u_error:236::print_ln:268 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mulf_tables_cmp:11::print_ln:303 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a -Statement [61] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:91 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::print_ln:245 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::mul8u_error:236::print_ln:268 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mulf_tables_cmp:11::print_ln:303 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a -Statement [65] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 [ print_char_cursor#132 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:71 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:75 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:79 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:83 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:87 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::print_str:243 [ print_line_cursor#10 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:248 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:252 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:256 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:260 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:264 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:288 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:292 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:301 [ print_char_cursor#132 print_str::str#16 ] ) always clobbers reg byte a reg byte y +Statement [60] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:91 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::print_ln:241 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::mul8u_error:232::print_ln:264 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mulf_tables_cmp:11::print_ln:299 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a +Statement [61] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:91 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::print_ln:241 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::mul8u_error:232::print_ln:264 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mulf_tables_cmp:11::print_ln:299 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a +Statement [65] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 [ print_char_cursor#132 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:71 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:75 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:79 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:83 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:87 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::print_str:239 [ print_line_cursor#10 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:244 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:248 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:252 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:256 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:260 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:284 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:288 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:297 [ print_char_cursor#132 print_str::str#16 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:78 [ mul8s_error::a#0 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:79 [ mul8s_error::b#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:128 [ mul8u_error::a#0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:128 [ mul8u_error::a#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:129 [ mul8u_error::b#0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:129 [ mul8u_error::b#0 ] -Statement [67] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) [ print_char_cursor#132 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:71 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:75 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:79 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:83 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:87 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::print_str:243 [ print_line_cursor#10 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:248 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:252 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:256 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:260 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:264 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:288 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:292 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:301 [ print_char_cursor#132 print_str::str#16 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:124 [ mul8u_error::a#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:124 [ mul8u_error::a#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:125 [ mul8u_error::b#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:125 [ mul8u_error::b#0 ] +Statement [67] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) [ print_char_cursor#132 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:71 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:75 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:79 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:83 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:87 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::print_str:239 [ print_line_cursor#10 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:244 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:248 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:252 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:256 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:260 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:284 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:288 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:297 [ print_char_cursor#132 print_str::str#16 ] ) always clobbers reg byte a reg byte y Statement [70] (byte*~) print_char_cursor#193 ← (byte*) print_line_cursor#1 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#193 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#193 ] ) always clobbers reg byte a Statement [80] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#1 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#1 ] ) always clobbers reg byte a Statement [84] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#2 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#2 ] ) always clobbers reg byte a @@ -7318,12 +7274,12 @@ Statement [88] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf# Statement [94] if((signed word) print_sword::w#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_char_cursor#132 print_sword::w#4 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89 [ print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] ) always clobbers reg byte a Statement [97] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 [ print_char_cursor#18 print_sword::w#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89 [ print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] ) always clobbers reg byte a Statement [99] (word~) print_word::w#13 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#134 print_word::w#13 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_word::w#13 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_word::w#13 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89 [ print_line_cursor#1 print_char_cursor#134 print_word::w#13 ] ) always clobbers reg byte a -Statement [103] (byte) print_byte::b#1 ← > (word) print_word::w#6 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100 [ print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266 [ print_line_cursor#10 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:290 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:294 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ) always clobbers reg byte a -Statement [105] (byte) print_byte::b#2 ← < (word) print_word::w#6 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100 [ print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266 [ print_line_cursor#10 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:290 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:294 [ print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a -Statement [109] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:106 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:250 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:254 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ) always clobbers reg byte a +Statement [103] (byte) print_byte::b#1 ← > (word) print_word::w#6 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100 [ print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262 [ print_line_cursor#10 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:286 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:290 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ) always clobbers reg byte a +Statement [105] (byte) print_byte::b#2 ← < (word) print_word::w#6 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100 [ print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262 [ print_line_cursor#10 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:286 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:290 [ print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a +Statement [109] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ] -Statement [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#18 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104 [ print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:106 [ print_line_cursor#10 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:106 [ print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:250 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:254 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a -Statement [117] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 [ print_char_cursor#84 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_char:96 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_char:96 [ mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_char:96 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104::print_char:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104::print_char:111 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104::print_char:111 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:104::print_char:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:104::print_char:111 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:104::print_char:111 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104::print_char:111 [ print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106::print_char:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106::print_char:111 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106::print_char:111 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:106::print_char:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:106::print_char:111 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:106::print_char:111 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:106::print_char:111 [ print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126::print_char:111 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126::print_char:111 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:250::print_char:111 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:254::print_char:111 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104::print_char:114 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104::print_char:114 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104::print_char:114 [ print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:104::print_char:114 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:104::print_char:114 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:104::print_char:114 [ print_line_cursor#10 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104::print_char:114 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104::print_char:114 [ print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106::print_char:114 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106::print_char:114 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106::print_char:114 [ print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:106::print_char:114 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:106::print_char:114 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:106::print_char:114 [ print_line_cursor#10 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106::print_char:114 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:106::print_char:114 [ print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126::print_char:114 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126::print_char:114 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:250::print_char:114 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:254::print_char:114 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_char:123 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_char:123 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_char:129 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_char:129 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] ) always clobbers reg byte y +Statement [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#18 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104 [ print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106 [ print_line_cursor#10 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106 [ print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a +Statement [117] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 [ print_char_cursor#84 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_char:96 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_char:96 [ mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_char:96 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104::print_char:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104::print_char:111 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104::print_char:111 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104::print_char:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104::print_char:111 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104::print_char:111 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104::print_char:111 [ print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106::print_char:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106::print_char:111 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106::print_char:111 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106::print_char:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106::print_char:111 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106::print_char:111 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106::print_char:111 [ print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126::print_char:111 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126::print_char:111 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246::print_char:111 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250::print_char:111 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104::print_char:114 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104::print_char:114 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104::print_char:114 [ print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104::print_char:114 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104::print_char:114 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104::print_char:114 [ print_line_cursor#10 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104::print_char:114 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104::print_char:114 [ print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106::print_char:114 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106::print_char:114 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106::print_char:114 [ print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106::print_char:114 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106::print_char:114 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106::print_char:114 [ print_line_cursor#10 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106::print_char:114 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106::print_char:114 [ print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126::print_char:114 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126::print_char:114 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246::print_char:114 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250::print_char:114 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_char:123 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_char:123 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_char:129 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_char:129 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:13 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:17 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] Statement [130] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sbyte::b#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a @@ -7331,102 +7287,98 @@ Statement [134] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8s::a#0 mul8 Removing always clobbered register reg byte a as potential for zp ZP_BYTE:72 [ mul8s::a#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:73 [ mul8s::b#0 ] Statement [135] (word) mul8s::m#0 ← (word) mul8u::return#2 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ) always clobbers reg byte a -Statement [137] (byte~) mul8s::$5 ← > (word) mul8s::m#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ) always clobbers reg byte a -Statement [138] (byte~) mul8s::$6 ← > (word) mul8s::m#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$6 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$6 ] ) always clobbers reg byte a -Statement [139] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ) always clobbers reg byte a -Statement [143] (byte~) mul8s::$11 ← > (word) mul8s::m#5 [ mul8s::a#0 mul8s::m#5 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::m#5 ] ) always clobbers reg byte a -Statement [144] (byte~) mul8s::$12 ← > (word) mul8s::m#5 [ mul8s::a#0 mul8s::m#5 mul8s::$12 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::m#5 mul8s::$12 ] ) always clobbers reg byte a -Statement [145] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 [ mul8s::m#5 mul8s::$17 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::m#5 mul8s::$17 ] ) always clobbers reg byte a -Statement [150] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#6 mul8u::mb#0 ] main:2::mul8u_compare:13::mul8u:221 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#6 mul8u::mb#0 ] ) always clobbers reg byte a +Statement [137] (byte~) mul8s::$6 ← > (word) mul8s::m#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$6 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$6 ] ) always clobbers reg byte a +Statement [138] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ) always clobbers reg byte a +Statement [142] (byte~) mul8s::$12 ← > (word) mul8s::m#5 [ mul8s::a#0 mul8s::m#5 mul8s::$12 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::m#5 mul8s::$12 ] ) always clobbers reg byte a +Statement [143] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 [ mul8s::m#5 mul8s::$17 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::m#5 mul8s::$17 ] ) always clobbers reg byte a +Statement [148] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#6 mul8u::mb#0 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#6 mul8u::mb#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] -Statement [154] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::mul8u_compare:13::mul8u:221 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [156] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::mul8u_compare:13::mul8u:221 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [165] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s_prepared::return#2 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::return#2 ] ) always clobbers reg byte a -Statement [166] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 [ mulf8s::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s::return#0 ] ) always clobbers reg byte a -Statement [170] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:97 [ mulf8s_prepared::b#0 ] -Statement [171] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [172] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [173] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [174] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ) always clobbers reg byte a -Statement [175] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a -Statement [179] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 ] ) always clobbers reg byte a -Statement [180] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ) always clobbers reg byte a -Statement [181] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a +Statement [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a +Statement [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [163] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s_prepared::return#2 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::return#2 ] ) always clobbers reg byte a +Statement [164] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 [ mulf8s::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s::return#0 ] ) always clobbers reg byte a +Statement [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] +Statement [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a +Statement [170] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a +Statement [171] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ) always clobbers reg byte a +Statement [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a +Statement [176] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ) always clobbers reg byte a +Statement [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a Statement asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:97 [ mulf8s_prepared::b#0 ] +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] -Statement [188] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8u_prepared::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164::mulf8u_prepared:169 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mul8u_compare:13::mulf8u:216::mulf8u_prepared:273 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#0 ] ) always clobbers reg byte a +Statement [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8u_prepared::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162::mulf8u_prepared:167 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mul8u_compare:13::mulf8u:212::mulf8u_prepared:269 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#0 ] ) always clobbers reg byte a Statement asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:67 [ mulf8s::b#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:119 [ mulf8u::b#0 ] -Statement [197] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:115 [ mulf8u::b#0 ] +Statement [193] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:60 [ muls8s::a#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:61 [ muls8s::b#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:30 [ muls8s::j#2 muls8s::j#1 ] -Statement [203] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ) always clobbers reg byte a +Statement [199] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ muls8s::i#2 muls8s::i#1 ] -Statement [212] (word) muls8u::return#2 ← (word) muls8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ) always clobbers reg byte a -Statement [213] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ) always clobbers reg byte a -Statement [217] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ) always clobbers reg byte a -Statement [218] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ) always clobbers reg byte a -Statement [222] (word) mul8u::return#3 ← (word) mul8u::res#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ) always clobbers reg byte a -Statement [223] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a -Statement [224] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a -Statement [227] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ) always clobbers reg byte a +Statement [208] (word) muls8u::return#2 ← (word) muls8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ) always clobbers reg byte a +Statement [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ) always clobbers reg byte a +Statement [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ) always clobbers reg byte a +Statement [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ) always clobbers reg byte a +Statement [218] (word) mul8u::return#3 ← (word) mul8u::res#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ) always clobbers reg byte a +Statement [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a +Statement [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a +Statement [223] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] -Statement [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a -Statement [233] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ) always clobbers reg byte a -Statement [234] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ) always clobbers reg byte a -Statement [235] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a -Statement [257] (word) print_word::w#3 ← (word) mul8u_error::ms#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:236 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a -Statement [261] (word) print_word::w#4 ← (word) mul8u_error::mn#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:236 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ) always clobbers reg byte a -Statement [265] (word) print_word::w#5 ← (word) mul8u_error::mf#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ( main:2::mul8u_compare:13::mul8u_error:236 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ) always clobbers reg byte a -Statement [274] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8u_prepared::return#2 ] ( main:2::mul8u_compare:13::mulf8u:216 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a -Statement [275] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 [ mulf8u::return#0 ] ( main:2::mul8u_compare:13::mulf8u:216 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#0 ] ) always clobbers reg byte a -Statement [279] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::mul8u_compare:13::muls8u:211 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:112 [ muls8u::a#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:113 [ muls8u::b#0 ] +Statement [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a +Statement [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ) always clobbers reg byte a +Statement [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ) always clobbers reg byte a +Statement [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a +Statement [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a +Statement [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ) always clobbers reg byte a +Statement [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ) always clobbers reg byte a +Statement [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8u_prepared::return#2 ] ( main:2::mul8u_compare:13::mulf8u:212 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a +Statement [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 [ mulf8u::return#0 ] ( main:2::mul8u_compare:13::mulf8u:212 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#0 ] ) always clobbers reg byte a +Statement [275] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::mul8u_compare:13::muls8u:207 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:108 [ muls8u::a#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:109 [ muls8u::b#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:37 [ muls8u::i#2 muls8u::i#1 ] -Statement [286] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a reg byte y -Statement [287] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a -Statement [289] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 [ print_char_cursor#132 print_word::w#11 mulf_tables_cmp::kc_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#11 mulf_tables_cmp::kc_sqr#2 ] ) always clobbers reg byte a -Statement [293] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 [ print_char_cursor#132 print_word::w#12 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#12 ] ) always clobbers reg byte a -Statement [299] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ) always clobbers reg byte a -Statement [304] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#225 ] ( main:2::mulf_tables_cmp:11 [ print_line_cursor#1 print_char_cursor#225 ] ) always clobbers reg byte a +Statement [282] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a reg byte y +Statement [283] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a +Statement [285] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 [ print_char_cursor#132 print_word::w#11 mulf_tables_cmp::kc_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#11 mulf_tables_cmp::kc_sqr#2 ] ) always clobbers reg byte a +Statement [289] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 [ print_char_cursor#132 print_word::w#12 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#12 ] ) always clobbers reg byte a +Statement [295] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ) always clobbers reg byte a +Statement [300] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#225 ] ( main:2::mulf_tables_cmp:11 [ print_line_cursor#1 print_char_cursor#225 ] ) always clobbers reg byte a Statement asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } always clobbers reg byte a reg byte x reg byte y -Statement [306] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [307] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [308] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [309] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [314] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a +Statement [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [305] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [310] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:44 [ mulf_init::c#2 mulf_init::c#1 ] -Statement [319] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a -Statement [320] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [315] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a +Statement [316] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:44 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [321] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a -Statement [322] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [324] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [326] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [328] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [317] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a +Statement [318] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [320] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [322] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [324] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] -Statement [329] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [331] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [335] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a -Statement [336] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [337] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [342] *((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 [344] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [325] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [327] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a +Statement [332] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [333] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [338] *((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 [340] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a Statement [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [23] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 [ mul8s_compare::a#7 mul8s_compare::b#10 muls8s::return#2 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 muls8s::return#2 print_line_cursor#1 ] ) always clobbers reg byte a Statement [24] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 ] ) always clobbers reg byte a @@ -7441,10 +7393,10 @@ Statement [44] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare:: Statement [45] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0 [ mul8s_compare::mf#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::mf#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 print_line_cursor#1 ] ) always clobbers reg byte a Statement [46] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 ] ) always clobbers reg byte a Statement [53] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 [ print_char_cursor#192 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ print_char_cursor#192 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [60] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:91 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::print_ln:245 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::mul8u_error:236::print_ln:268 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mulf_tables_cmp:11::print_ln:303 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a -Statement [61] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:91 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::print_ln:245 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::mul8u_error:236::print_ln:268 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mulf_tables_cmp:11::print_ln:303 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a -Statement [65] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 [ print_char_cursor#132 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:71 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:75 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:79 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:83 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:87 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::print_str:243 [ print_line_cursor#10 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:248 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:252 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:256 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:260 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:264 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:288 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:292 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:301 [ print_char_cursor#132 print_str::str#16 ] ) always clobbers reg byte a reg byte y -Statement [67] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) [ print_char_cursor#132 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:71 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:75 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:79 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:83 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:87 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::print_str:243 [ print_line_cursor#10 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:248 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:252 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:256 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:260 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:264 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:288 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:292 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:301 [ print_char_cursor#132 print_str::str#16 ] ) always clobbers reg byte a reg byte y +Statement [60] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:91 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::print_ln:241 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::mul8u_error:232::print_ln:264 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mulf_tables_cmp:11::print_ln:299 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a +Statement [61] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:91 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::print_ln:241 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::mul8u_error:232::print_ln:264 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mulf_tables_cmp:11::print_ln:299 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a +Statement [65] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 [ print_char_cursor#132 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:71 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:75 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:79 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:83 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:87 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::print_str:239 [ print_line_cursor#10 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:244 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:248 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:252 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:256 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:260 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:284 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:288 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:297 [ print_char_cursor#132 print_str::str#16 ] ) always clobbers reg byte a reg byte y +Statement [67] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) [ print_char_cursor#132 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:71 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:75 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:79 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:83 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:87 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::print_str:239 [ print_line_cursor#10 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:244 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:248 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:252 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:256 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:260 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:284 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:288 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:297 [ print_char_cursor#132 print_str::str#16 ] ) always clobbers reg byte a reg byte y Statement [70] (byte*~) print_char_cursor#193 ← (byte*) print_line_cursor#1 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#193 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#193 ] ) always clobbers reg byte a Statement [80] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#1 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#1 ] ) always clobbers reg byte a Statement [84] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#2 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#2 ] ) always clobbers reg byte a @@ -7452,83 +7404,79 @@ Statement [88] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf# Statement [94] if((signed word) print_sword::w#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_char_cursor#132 print_sword::w#4 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89 [ print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] ) always clobbers reg byte a Statement [97] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 [ print_char_cursor#18 print_sword::w#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89 [ print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] ) always clobbers reg byte a Statement [99] (word~) print_word::w#13 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#134 print_word::w#13 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_word::w#13 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_word::w#13 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89 [ print_line_cursor#1 print_char_cursor#134 print_word::w#13 ] ) always clobbers reg byte a -Statement [103] (byte) print_byte::b#1 ← > (word) print_word::w#6 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100 [ print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266 [ print_line_cursor#10 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:290 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:294 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ) always clobbers reg byte a -Statement [105] (byte) print_byte::b#2 ← < (word) print_word::w#6 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100 [ print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266 [ print_line_cursor#10 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:290 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:294 [ print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a -Statement [109] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:106 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:250 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:254 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ) always clobbers reg byte a -Statement [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#18 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104 [ print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:106 [ print_line_cursor#10 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:106 [ print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:250 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:254 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a -Statement [117] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 [ print_char_cursor#84 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_char:96 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_char:96 [ mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_char:96 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104::print_char:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104::print_char:111 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104::print_char:111 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:104::print_char:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:104::print_char:111 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:104::print_char:111 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104::print_char:111 [ print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106::print_char:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106::print_char:111 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106::print_char:111 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:106::print_char:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:106::print_char:111 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:106::print_char:111 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:106::print_char:111 [ print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126::print_char:111 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126::print_char:111 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:250::print_char:111 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:254::print_char:111 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104::print_char:114 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104::print_char:114 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104::print_char:114 [ print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:104::print_char:114 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:104::print_char:114 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:104::print_char:114 [ print_line_cursor#10 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104::print_char:114 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104::print_char:114 [ print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106::print_char:114 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106::print_char:114 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106::print_char:114 [ print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:106::print_char:114 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:106::print_char:114 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:106::print_char:114 [ print_line_cursor#10 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106::print_char:114 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:106::print_char:114 [ print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126::print_char:114 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126::print_char:114 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:250::print_char:114 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:254::print_char:114 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_char:123 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_char:123 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_char:129 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_char:129 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] ) always clobbers reg byte y +Statement [103] (byte) print_byte::b#1 ← > (word) print_word::w#6 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100 [ print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262 [ print_line_cursor#10 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:286 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:290 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ) always clobbers reg byte a +Statement [105] (byte) print_byte::b#2 ← < (word) print_word::w#6 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100 [ print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262 [ print_line_cursor#10 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:286 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:290 [ print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a +Statement [109] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ) always clobbers reg byte a +Statement [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#18 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104 [ print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106 [ print_line_cursor#10 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106 [ print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a +Statement [117] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 [ print_char_cursor#84 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_char:96 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_char:96 [ mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_char:96 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104::print_char:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104::print_char:111 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104::print_char:111 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104::print_char:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104::print_char:111 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104::print_char:111 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104::print_char:111 [ print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106::print_char:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106::print_char:111 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106::print_char:111 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106::print_char:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106::print_char:111 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106::print_char:111 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106::print_char:111 [ print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126::print_char:111 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126::print_char:111 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246::print_char:111 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250::print_char:111 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104::print_char:114 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104::print_char:114 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104::print_char:114 [ print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104::print_char:114 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104::print_char:114 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104::print_char:114 [ print_line_cursor#10 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104::print_char:114 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104::print_char:114 [ print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106::print_char:114 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106::print_char:114 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106::print_char:114 [ print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106::print_char:114 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106::print_char:114 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106::print_char:114 [ print_line_cursor#10 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106::print_char:114 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106::print_char:114 [ print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126::print_char:114 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126::print_char:114 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246::print_char:114 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250::print_char:114 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_char:123 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_char:123 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_char:129 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_char:129 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] ) always clobbers reg byte y Statement [130] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sbyte::b#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a Statement [134] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ) always clobbers reg byte a Statement [135] (word) mul8s::m#0 ← (word) mul8u::return#2 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ) always clobbers reg byte a -Statement [137] (byte~) mul8s::$5 ← > (word) mul8s::m#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ) always clobbers reg byte a -Statement [138] (byte~) mul8s::$6 ← > (word) mul8s::m#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$6 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$6 ] ) always clobbers reg byte a -Statement [139] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ) always clobbers reg byte a -Statement [143] (byte~) mul8s::$11 ← > (word) mul8s::m#5 [ mul8s::a#0 mul8s::m#5 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::m#5 ] ) always clobbers reg byte a -Statement [144] (byte~) mul8s::$12 ← > (word) mul8s::m#5 [ mul8s::a#0 mul8s::m#5 mul8s::$12 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::m#5 mul8s::$12 ] ) always clobbers reg byte a -Statement [145] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 [ mul8s::m#5 mul8s::$17 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::m#5 mul8s::$17 ] ) always clobbers reg byte a -Statement [150] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#6 mul8u::mb#0 ] main:2::mul8u_compare:13::mul8u:221 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#6 mul8u::mb#0 ] ) always clobbers reg byte a -Statement [154] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::mul8u_compare:13::mul8u:221 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [156] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::mul8u_compare:13::mul8u:221 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [165] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s_prepared::return#2 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::return#2 ] ) always clobbers reg byte a -Statement [166] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 [ mulf8s::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s::return#0 ] ) always clobbers reg byte a -Statement [170] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ) always clobbers reg byte a -Statement [171] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [172] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [173] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [174] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ) always clobbers reg byte a -Statement [175] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a -Statement [179] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 ] ) always clobbers reg byte a -Statement [180] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ) always clobbers reg byte a -Statement [181] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a +Statement [137] (byte~) mul8s::$6 ← > (word) mul8s::m#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$6 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$6 ] ) always clobbers reg byte a +Statement [138] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ) always clobbers reg byte a +Statement [142] (byte~) mul8s::$12 ← > (word) mul8s::m#5 [ mul8s::a#0 mul8s::m#5 mul8s::$12 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::m#5 mul8s::$12 ] ) always clobbers reg byte a +Statement [143] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 [ mul8s::m#5 mul8s::$17 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::m#5 mul8s::$17 ] ) always clobbers reg byte a +Statement [148] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#6 mul8u::mb#0 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#6 mul8u::mb#0 ] ) always clobbers reg byte a +Statement [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a +Statement [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [163] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s_prepared::return#2 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::return#2 ] ) always clobbers reg byte a +Statement [164] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 [ mulf8s::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s::return#0 ] ) always clobbers reg byte a +Statement [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ) always clobbers reg byte a +Statement [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a +Statement [170] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a +Statement [171] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ) always clobbers reg byte a +Statement [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a +Statement [176] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ) always clobbers reg byte a +Statement [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a Statement asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } always clobbers reg byte a reg byte x -Statement [188] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8u_prepared::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164::mulf8u_prepared:169 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mul8u_compare:13::mulf8u:216::mulf8u_prepared:273 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#0 ] ) always clobbers reg byte a +Statement [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8u_prepared::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162::mulf8u_prepared:167 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mul8u_compare:13::mulf8u:212::mulf8u_prepared:269 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#0 ] ) always clobbers reg byte a Statement asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } always clobbers reg byte a -Statement [197] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ) always clobbers reg byte a -Statement [203] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ) always clobbers reg byte a -Statement [212] (word) muls8u::return#2 ← (word) muls8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ) always clobbers reg byte a -Statement [213] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ) always clobbers reg byte a -Statement [217] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ) always clobbers reg byte a -Statement [218] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ) always clobbers reg byte a -Statement [222] (word) mul8u::return#3 ← (word) mul8u::res#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ) always clobbers reg byte a -Statement [223] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a -Statement [224] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a -Statement [227] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ) always clobbers reg byte a -Statement [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a -Statement [233] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ) always clobbers reg byte a -Statement [234] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ) always clobbers reg byte a -Statement [235] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a -Statement [257] (word) print_word::w#3 ← (word) mul8u_error::ms#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:236 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a -Statement [261] (word) print_word::w#4 ← (word) mul8u_error::mn#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:236 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ) always clobbers reg byte a -Statement [265] (word) print_word::w#5 ← (word) mul8u_error::mf#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ( main:2::mul8u_compare:13::mul8u_error:236 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ) always clobbers reg byte a -Statement [274] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8u_prepared::return#2 ] ( main:2::mul8u_compare:13::mulf8u:216 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a -Statement [275] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 [ mulf8u::return#0 ] ( main:2::mul8u_compare:13::mulf8u:216 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#0 ] ) always clobbers reg byte a -Statement [279] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::mul8u_compare:13::muls8u:211 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ) always clobbers reg byte a -Statement [286] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a reg byte y -Statement [287] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a -Statement [289] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 [ print_char_cursor#132 print_word::w#11 mulf_tables_cmp::kc_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#11 mulf_tables_cmp::kc_sqr#2 ] ) always clobbers reg byte a -Statement [293] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 [ print_char_cursor#132 print_word::w#12 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#12 ] ) always clobbers reg byte a -Statement [299] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ) always clobbers reg byte a -Statement [304] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#225 ] ( main:2::mulf_tables_cmp:11 [ print_line_cursor#1 print_char_cursor#225 ] ) always clobbers reg byte a +Statement [193] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ) always clobbers reg byte a +Statement [199] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ) always clobbers reg byte a +Statement [208] (word) muls8u::return#2 ← (word) muls8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ) always clobbers reg byte a +Statement [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ) always clobbers reg byte a +Statement [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ) always clobbers reg byte a +Statement [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ) always clobbers reg byte a +Statement [218] (word) mul8u::return#3 ← (word) mul8u::res#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ) always clobbers reg byte a +Statement [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a +Statement [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a +Statement [223] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ) always clobbers reg byte a +Statement [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a +Statement [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ) always clobbers reg byte a +Statement [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ) always clobbers reg byte a +Statement [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a +Statement [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a +Statement [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ) always clobbers reg byte a +Statement [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ) always clobbers reg byte a +Statement [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8u_prepared::return#2 ] ( main:2::mul8u_compare:13::mulf8u:212 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a +Statement [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 [ mulf8u::return#0 ] ( main:2::mul8u_compare:13::mulf8u:212 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#0 ] ) always clobbers reg byte a +Statement [275] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::mul8u_compare:13::muls8u:207 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ) always clobbers reg byte a +Statement [282] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a reg byte y +Statement [283] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a +Statement [285] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 [ print_char_cursor#132 print_word::w#11 mulf_tables_cmp::kc_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#11 mulf_tables_cmp::kc_sqr#2 ] ) always clobbers reg byte a +Statement [289] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 [ print_char_cursor#132 print_word::w#12 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#12 ] ) always clobbers reg byte a +Statement [295] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ) always clobbers reg byte a +Statement [300] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#225 ] ( main:2::mulf_tables_cmp:11 [ print_line_cursor#1 print_char_cursor#225 ] ) always clobbers reg byte a Statement asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } always clobbers reg byte a reg byte x reg byte y -Statement [306] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [307] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [308] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [309] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [314] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a -Statement [319] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a -Statement [320] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [321] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a -Statement [322] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [324] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [326] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [328] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [329] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [331] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [335] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a -Statement [336] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [337] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [342] *((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 [344] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [305] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [310] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a +Statement [315] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a +Statement [316] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [317] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a +Statement [318] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [320] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [322] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [324] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [325] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [327] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a +Statement [332] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [333] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [338] *((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 [340] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) 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 [ mul8s_compare::a#7 mul8s_compare::a#1 ] : zp ZP_BYTE:2 , reg byte y , Potential registers zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] : zp ZP_BYTE:3 , reg byte y , Potential registers zp ZP_BYTE:4 [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , @@ -7588,140 +7536,128 @@ Potential registers zp ZP_WORD:84 [ mul8s_error::mf#0 ] : zp ZP_WORD:84 , Potential registers zp ZP_BYTE:86 [ print_byte::$0 ] : zp ZP_BYTE:86 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:87 [ print_byte::$2 ] : zp ZP_BYTE:87 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:88 [ mul8u::return#2 ] : zp ZP_WORD:88 , -Potential registers zp ZP_BYTE:90 [ mul8s::$5 ] : zp ZP_BYTE:90 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:91 [ mul8s::$6 ] : zp ZP_BYTE:91 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:92 [ mul8s::$16 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:93 [ mul8s::$11 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:94 [ mul8s::$12 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:95 [ mul8s::$17 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:96 [ mul8u::$1 ] : zp ZP_BYTE:96 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:97 [ mulf8s_prepared::b#0 ] : zp ZP_BYTE:97 , reg byte y , -Potential registers zp ZP_WORD:98 [ mulf8s_prepared::return#2 ] : zp ZP_WORD:98 , -Potential registers zp ZP_WORD:100 [ mulf8s::return#0 ] : zp ZP_WORD:100 , -Potential registers zp ZP_WORD:102 [ mulf8u_prepared::return#3 ] : zp ZP_WORD:102 , -Potential registers zp ZP_BYTE:104 [ mulf8s_prepared::$4 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:105 [ mulf8s_prepared::$5 ] : zp ZP_BYTE:105 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:106 [ mulf8s_prepared::$15 ] : zp ZP_BYTE:106 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:107 [ mulf8s_prepared::$10 ] : zp ZP_BYTE:107 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:108 [ mulf8s_prepared::$11 ] : zp ZP_BYTE:108 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:109 [ mulf8s_prepared::$16 ] : zp ZP_BYTE:109 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:110 [ mulf8u_prepared::return#0 ] : zp ZP_WORD:110 , -Potential registers zp ZP_BYTE:112 [ muls8u::a#0 ] : zp ZP_BYTE:112 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:113 [ muls8u::b#0 ] : zp ZP_BYTE:113 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:114 [ muls8u::return#2 ] : zp ZP_WORD:114 , -Potential registers zp ZP_WORD:116 [ mul8u_compare::ms#0 ] : zp ZP_WORD:116 , -Potential registers zp ZP_BYTE:118 [ mulf8u::a#0 ] : zp ZP_BYTE:118 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:119 [ mulf8u::b#0 ] : zp ZP_BYTE:119 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:120 [ mulf8u::return#2 ] : zp ZP_WORD:120 , -Potential registers zp ZP_WORD:122 [ mul8u_compare::mf#0 ] : zp ZP_WORD:122 , -Potential registers zp ZP_WORD:124 [ mul8u::return#3 ] : zp ZP_WORD:124 , -Potential registers zp ZP_WORD:126 [ mul8u_compare::mn#0 ] : zp ZP_WORD:126 , -Potential registers zp ZP_BYTE:128 [ mul8u_error::a#0 ] : zp ZP_BYTE:128 , reg byte x , -Potential registers zp ZP_BYTE:129 [ mul8u_error::b#0 ] : zp ZP_BYTE:129 , reg byte x , -Potential registers zp ZP_WORD:130 [ mul8u_error::ms#0 ] : zp ZP_WORD:130 , -Potential registers zp ZP_WORD:132 [ mul8u_error::mn#0 ] : zp ZP_WORD:132 , -Potential registers zp ZP_WORD:134 [ mul8u_error::mf#0 ] : zp ZP_WORD:134 , -Potential registers zp ZP_WORD:136 [ mulf8u_prepared::return#2 ] : zp ZP_WORD:136 , -Potential registers zp ZP_WORD:138 [ mulf8u::return#0 ] : zp ZP_WORD:138 , -Potential registers zp ZP_BYTE:140 [ mulf_init::$2 ] : zp ZP_BYTE:140 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:141 [ mulf_init::$5 ] : zp ZP_BYTE:141 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:142 [ mulf_init::$6 ] : zp ZP_BYTE:142 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:90 [ mul8s::$6 ] : zp ZP_BYTE:90 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:91 [ mul8s::$16 ] : zp ZP_BYTE:91 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:92 [ mul8s::$12 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:93 [ mul8s::$17 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:94 [ mul8u::$1 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] : zp ZP_BYTE:95 , reg byte y , +Potential registers zp ZP_WORD:96 [ mulf8s_prepared::return#2 ] : zp ZP_WORD:96 , +Potential registers zp ZP_WORD:98 [ mulf8s::return#0 ] : zp ZP_WORD:98 , +Potential registers zp ZP_WORD:100 [ mulf8u_prepared::return#3 ] : zp ZP_WORD:100 , +Potential registers zp ZP_BYTE:102 [ mulf8s_prepared::$5 ] : zp ZP_BYTE:102 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:103 [ mulf8s_prepared::$15 ] : zp ZP_BYTE:103 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:104 [ mulf8s_prepared::$11 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:105 [ mulf8s_prepared::$16 ] : zp ZP_BYTE:105 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:106 [ mulf8u_prepared::return#0 ] : zp ZP_WORD:106 , +Potential registers zp ZP_BYTE:108 [ muls8u::a#0 ] : zp ZP_BYTE:108 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:109 [ muls8u::b#0 ] : zp ZP_BYTE:109 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:110 [ muls8u::return#2 ] : zp ZP_WORD:110 , +Potential registers zp ZP_WORD:112 [ mul8u_compare::ms#0 ] : zp ZP_WORD:112 , +Potential registers zp ZP_BYTE:114 [ mulf8u::a#0 ] : zp ZP_BYTE:114 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:115 [ mulf8u::b#0 ] : zp ZP_BYTE:115 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:116 [ mulf8u::return#2 ] : zp ZP_WORD:116 , +Potential registers zp ZP_WORD:118 [ mul8u_compare::mf#0 ] : zp ZP_WORD:118 , +Potential registers zp ZP_WORD:120 [ mul8u::return#3 ] : zp ZP_WORD:120 , +Potential registers zp ZP_WORD:122 [ mul8u_compare::mn#0 ] : zp ZP_WORD:122 , +Potential registers zp ZP_BYTE:124 [ mul8u_error::a#0 ] : zp ZP_BYTE:124 , reg byte x , +Potential registers zp ZP_BYTE:125 [ mul8u_error::b#0 ] : zp ZP_BYTE:125 , reg byte x , +Potential registers zp ZP_WORD:126 [ mul8u_error::ms#0 ] : zp ZP_WORD:126 , +Potential registers zp ZP_WORD:128 [ mul8u_error::mn#0 ] : zp ZP_WORD:128 , +Potential registers zp ZP_WORD:130 [ mul8u_error::mf#0 ] : zp ZP_WORD:130 , +Potential registers zp ZP_WORD:132 [ mulf8u_prepared::return#2 ] : zp ZP_WORD:132 , +Potential registers zp ZP_WORD:134 [ mulf8u::return#0 ] : zp ZP_WORD:134 , +Potential registers zp ZP_BYTE:136 [ mulf_init::$2 ] : zp ZP_BYTE:136 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:137 [ mulf_init::$5 ] : zp ZP_BYTE:137 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:138 [ mulf_init::$6 ] : zp ZP_BYTE:138 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES Uplift Scope [muls8s] 6,707: zp ZP_WORD:31 [ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] 2,502.5: zp ZP_BYTE:30 [ muls8s::j#2 muls8s::j#1 ] 2,502.5: zp ZP_BYTE:33 [ muls8s::i#2 muls8s::i#1 ] 202: zp ZP_WORD:62 [ muls8s::return#2 ] 191.18: zp ZP_BYTE:61 [ muls8s::b#0 ] 175.58: zp ZP_BYTE:60 [ muls8s::a#0 ] -Uplift Scope [mul8u] 3,446.71: zp ZP_WORD:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 2,435.29: zp ZP_WORD:24 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 2,002: zp ZP_BYTE:96 [ mul8u::$1 ] 1,826.17: zp ZP_BYTE:21 [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] 309: zp ZP_BYTE:20 [ mul8u::b#2 mul8u::b#3 mul8u::b#1 ] 202: zp ZP_WORD:124 [ mul8u::return#3 ] 4: zp ZP_WORD:88 [ mul8u::return#2 ] -Uplift Scope [muls8u] 3,370.33: zp ZP_WORD:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] 2,502.5: zp ZP_BYTE:37 [ muls8u::i#2 muls8u::i#1 ] 202: zp ZP_WORD:114 [ muls8u::return#2 ] 183.67: zp ZP_BYTE:113 [ muls8u::b#0 ] 157.71: zp ZP_BYTE:112 [ muls8u::a#0 ] -Uplift Scope [mul8u_compare] 235.67: zp ZP_BYTE:36 [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] 171.78: zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] 28.61: zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] 17: zp ZP_WORD:126 [ mul8u_compare::mn#0 ] 14.52: zp ZP_WORD:116 [ mul8u_compare::ms#0 ] 11.33: zp ZP_WORD:122 [ mul8u_compare::mf#0 ] +Uplift Scope [mul8u] 3,446.71: zp ZP_WORD:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 2,435.29: zp ZP_WORD:24 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 2,002: zp ZP_BYTE:94 [ mul8u::$1 ] 1,826.17: zp ZP_BYTE:21 [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] 309: zp ZP_BYTE:20 [ mul8u::b#2 mul8u::b#3 mul8u::b#1 ] 202: zp ZP_WORD:120 [ mul8u::return#3 ] 4: zp ZP_WORD:88 [ mul8u::return#2 ] +Uplift Scope [muls8u] 3,370.33: zp ZP_WORD:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] 2,502.5: zp ZP_BYTE:37 [ muls8u::i#2 muls8u::i#1 ] 202: zp ZP_WORD:110 [ muls8u::return#2 ] 183.67: zp ZP_BYTE:109 [ muls8u::b#0 ] 157.71: zp ZP_BYTE:108 [ muls8u::a#0 ] +Uplift Scope [mul8u_compare] 235.67: zp ZP_BYTE:36 [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] 171.78: zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] 28.61: zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] 17: zp ZP_WORD:122 [ mul8u_compare::mn#0 ] 14.52: zp ZP_WORD:112 [ mul8u_compare::ms#0 ] 11.33: zp ZP_WORD:118 [ mul8u_compare::mf#0 ] Uplift Scope [mul8s_compare] 235.67: zp ZP_BYTE:4 [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] 171.78: zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] 28.61: zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] 17: zp ZP_WORD:76 [ mul8s_compare::mn#0 ] 14.52: zp ZP_WORD:64 [ mul8s_compare::ms#0 ] 11.33: zp ZP_WORD:70 [ mul8s_compare::mf#0 ] -Uplift Scope [mulf8u] 202: zp ZP_WORD:120 [ mulf8u::return#2 ] 51.5: zp ZP_BYTE:118 [ mulf8u::a#0 ] 34.33: zp ZP_BYTE:119 [ mulf8u::b#0 ] 34.33: zp ZP_WORD:138 [ mulf8u::return#0 ] -Uplift Scope [mulf8s] 202: zp ZP_WORD:68 [ mulf8s::return#2 ] 34.33: zp ZP_WORD:100 [ mulf8s::return#0 ] 33.67: zp ZP_BYTE:66 [ mulf8s::a#0 ] 25.75: zp ZP_BYTE:67 [ mulf8s::b#0 ] -Uplift Scope [mul8s] 202: zp ZP_WORD:74 [ mul8s::return#2 ] 20: zp ZP_BYTE:90 [ mul8s::$5 ] 20: zp ZP_BYTE:93 [ mul8s::$11 ] 13.73: zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] 8.58: zp ZP_BYTE:73 [ mul8s::b#0 ] 6.44: zp ZP_BYTE:72 [ mul8s::a#0 ] 4: zp ZP_BYTE:91 [ mul8s::$6 ] 4: zp ZP_BYTE:92 [ mul8s::$16 ] 4: zp ZP_BYTE:94 [ mul8s::$12 ] 4: zp ZP_BYTE:95 [ mul8s::$17 ] -Uplift Scope [mulf_init] 45.1: zp ZP_WORD:50 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 24.36: zp ZP_BYTE:44 [ mulf_init::c#2 mulf_init::c#1 ] 24.14: zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp ZP_BYTE:140 [ mulf_init::$2 ] 22: zp ZP_BYTE:141 [ mulf_init::$5 ] 22: zp ZP_BYTE:142 [ mulf_init::$6 ] 20.62: zp ZP_WORD:53 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 19.04: zp ZP_WORD:45 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 16.5: zp ZP_BYTE:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 14.14: zp ZP_WORD:55 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 12.05: zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] 8.5: zp ZP_WORD:47 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplift Scope [mulf8u] 202: zp ZP_WORD:116 [ mulf8u::return#2 ] 51.5: zp ZP_BYTE:114 [ mulf8u::a#0 ] 34.33: zp ZP_BYTE:115 [ mulf8u::b#0 ] 34.33: zp ZP_WORD:134 [ mulf8u::return#0 ] +Uplift Scope [mulf8s] 202: zp ZP_WORD:68 [ mulf8s::return#2 ] 34.33: zp ZP_WORD:98 [ mulf8s::return#0 ] 33.67: zp ZP_BYTE:66 [ mulf8s::a#0 ] 25.75: zp ZP_BYTE:67 [ mulf8s::b#0 ] +Uplift Scope [mulf_init] 45.1: zp ZP_WORD:50 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 24.36: zp ZP_BYTE:44 [ mulf_init::c#2 mulf_init::c#1 ] 24.14: zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp ZP_BYTE:136 [ mulf_init::$2 ] 22: zp ZP_BYTE:137 [ mulf_init::$5 ] 22: zp ZP_BYTE:138 [ mulf_init::$6 ] 20.62: zp ZP_WORD:53 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 19.04: zp ZP_WORD:45 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 16.5: zp ZP_BYTE:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 14.14: zp ZP_WORD:55 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 12.05: zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] 8.5: zp ZP_WORD:47 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplift Scope [mul8s] 202: zp ZP_WORD:74 [ mul8s::return#2 ] 13.83: zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] 9.36: zp ZP_BYTE:73 [ mul8s::b#0 ] 7.36: zp ZP_BYTE:72 [ mul8s::a#0 ] 4: zp ZP_BYTE:90 [ mul8s::$6 ] 4: zp ZP_BYTE:91 [ mul8s::$16 ] 4: zp ZP_BYTE:92 [ mul8s::$12 ] 4: zp ZP_BYTE:93 [ mul8s::$17 ] Uplift Scope [] 79.74: zp ZP_WORD:15 [ print_char_cursor#84 print_char_cursor#140 print_char_cursor#139 print_char_cursor#134 print_char_cursor#152 print_char_cursor#192 print_char_cursor#193 print_char_cursor#133 print_char_cursor#132 print_char_cursor#18 print_char_cursor#31 print_char_cursor#1 print_char_cursor#225 ] 34.73: zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ] -Uplift Scope [mulf8s_prepared] 20: zp ZP_BYTE:104 [ mulf8s_prepared::$4 ] 20: zp ZP_BYTE:107 [ mulf8s_prepared::$10 ] 13.73: zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] 4: zp ZP_WORD:98 [ mulf8s_prepared::return#2 ] 4: zp ZP_BYTE:105 [ mulf8s_prepared::$5 ] 4: zp ZP_BYTE:106 [ mulf8s_prepared::$15 ] 4: zp ZP_BYTE:108 [ mulf8s_prepared::$11 ] 4: zp ZP_BYTE:109 [ mulf8s_prepared::$16 ] 0.36: zp ZP_BYTE:97 [ mulf8s_prepared::b#0 ] Uplift Scope [mulf_tables_cmp] 20.17: zp ZP_WORD:40 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] 15.58: zp ZP_WORD:42 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] Uplift Scope [print_str] 35.5: zp ZP_WORD:7 [ print_str::str#16 print_str::str#18 print_str::str#0 ] +Uplift Scope [mulf8s_prepared] 13.83: zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] 4: zp ZP_WORD:96 [ mulf8s_prepared::return#2 ] 4: zp ZP_BYTE:102 [ mulf8s_prepared::$5 ] 4: zp ZP_BYTE:103 [ mulf8s_prepared::$15 ] 4: zp ZP_BYTE:104 [ mulf8s_prepared::$11 ] 4: zp ZP_BYTE:105 [ mulf8s_prepared::$16 ] 0.4: zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] Uplift Scope [print_cls] 33: zp ZP_WORD:58 [ print_cls::sc#2 print_cls::sc#1 ] Uplift Scope [print_byte] 23.5: zp ZP_BYTE:13 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ] 4: zp ZP_BYTE:86 [ print_byte::$0 ] 4: zp ZP_BYTE:87 [ print_byte::$2 ] Uplift Scope [print_word] 29.33: zp ZP_WORD:11 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 ] -Uplift Scope [mulf8u_prepared] 14: zp ZP_BYTE:28 [ mulf8u_prepared::b#2 mulf8u_prepared::b#3 mulf8u_prepared::b#0 ] 4: zp ZP_WORD:102 [ mulf8u_prepared::return#3 ] 4: zp ZP_WORD:136 [ mulf8u_prepared::return#2 ] 1.5: zp ZP_WORD:110 [ mulf8u_prepared::return#0 ] +Uplift Scope [mulf8u_prepared] 14: zp ZP_BYTE:28 [ mulf8u_prepared::b#2 mulf8u_prepared::b#3 mulf8u_prepared::b#0 ] 4: zp ZP_WORD:100 [ mulf8u_prepared::return#3 ] 4: zp ZP_WORD:132 [ mulf8u_prepared::return#2 ] 1.5: zp ZP_WORD:106 [ mulf8u_prepared::return#0 ] Uplift Scope [print_sword] 23: zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 ] Uplift Scope [print_sbyte] 17.67: zp ZP_BYTE:17 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] Uplift Scope [print_char] 14: zp ZP_BYTE:14 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] Uplift Scope [mulf8u_prepare] 14: zp ZP_BYTE:29 [ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#0 ] -Uplift Scope [mul8u_error] 0.57: zp ZP_BYTE:128 [ mul8u_error::a#0 ] 0.4: zp ZP_BYTE:129 [ mul8u_error::b#0 ] 0.31: zp ZP_WORD:130 [ mul8u_error::ms#0 ] 0.25: zp ZP_WORD:132 [ mul8u_error::mn#0 ] 0.21: zp ZP_WORD:134 [ mul8u_error::mf#0 ] +Uplift Scope [mul8u_error] 0.57: zp ZP_BYTE:124 [ mul8u_error::a#0 ] 0.4: zp ZP_BYTE:125 [ mul8u_error::b#0 ] 0.31: zp ZP_WORD:126 [ mul8u_error::ms#0 ] 0.25: zp ZP_WORD:128 [ mul8u_error::mn#0 ] 0.21: zp ZP_WORD:130 [ mul8u_error::mf#0 ] Uplift Scope [mul8s_error] 0.57: zp ZP_BYTE:78 [ mul8s_error::a#0 ] 0.4: zp ZP_BYTE:79 [ mul8s_error::b#0 ] 0.31: zp ZP_WORD:80 [ mul8s_error::ms#0 ] 0.25: zp ZP_WORD:82 [ mul8s_error::mn#0 ] 0.21: zp ZP_WORD:84 [ mul8s_error::mf#0 ] Uplift Scope [print_ln] Uplift Scope [main] Uplift Scope [mulf_init_asm] -Uplifting [muls8s] best 318142 combination zp ZP_WORD:31 [ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] reg byte y [ muls8s::j#2 muls8s::j#1 ] reg byte y [ muls8s::i#2 muls8s::i#1 ] zp ZP_WORD:62 [ muls8s::return#2 ] reg byte x [ muls8s::b#0 ] zp ZP_BYTE:60 [ muls8s::a#0 ] -Uplifting [mul8u] best 308533 combination zp ZP_WORD:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:24 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] reg byte a [ mul8u::b#2 mul8u::b#3 mul8u::b#1 ] zp ZP_WORD:124 [ mul8u::return#3 ] zp ZP_WORD:88 [ mul8u::return#2 ] -Uplifting [muls8u] best 298233 combination zp ZP_WORD:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] reg byte y [ muls8u::i#2 muls8u::i#1 ] zp ZP_WORD:114 [ muls8u::return#2 ] reg byte x [ muls8u::b#0 ] zp ZP_BYTE:112 [ muls8u::a#0 ] -Uplifting [mul8u_compare] best 297033 combination reg byte x [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] zp ZP_WORD:126 [ mul8u_compare::mn#0 ] zp ZP_WORD:116 [ mul8u_compare::ms#0 ] zp ZP_WORD:122 [ mul8u_compare::mf#0 ] -Uplifting [mul8s_compare] best 295833 combination reg byte x [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] zp ZP_WORD:76 [ mul8s_compare::mn#0 ] zp ZP_WORD:64 [ mul8s_compare::ms#0 ] zp ZP_WORD:70 [ mul8s_compare::mf#0 ] -Uplifting [mulf8u] best 295227 combination zp ZP_WORD:120 [ mulf8u::return#2 ] reg byte a [ mulf8u::a#0 ] reg byte x [ mulf8u::b#0 ] zp ZP_WORD:138 [ mulf8u::return#0 ] -Uplifting [mulf8s] best 294621 combination zp ZP_WORD:68 [ mulf8s::return#2 ] zp ZP_WORD:100 [ mulf8s::return#0 ] reg byte a [ mulf8s::a#0 ] reg byte x [ mulf8s::b#0 ] -Uplifting [mul8s] best 294312 combination zp ZP_WORD:74 [ mul8s::return#2 ] reg byte a [ mul8s::$5 ] reg byte a [ mul8s::$11 ] zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] reg byte y [ mul8s::b#0 ] zp ZP_BYTE:72 [ mul8s::a#0 ] zp ZP_BYTE:91 [ mul8s::$6 ] zp ZP_BYTE:92 [ mul8s::$16 ] zp ZP_BYTE:94 [ mul8s::$12 ] zp ZP_BYTE:95 [ mul8s::$17 ] -Limited combination testing to 100 combinations of 36864 possible. -Uplifting [mulf_init] best 294062 combination zp ZP_WORD:50 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$2 ] reg byte a [ mulf_init::$5 ] reg byte a [ mulf_init::$6 ] zp ZP_WORD:53 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:45 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] zp ZP_BYTE:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_WORD:55 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_WORD:47 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplifting [muls8s] best 318118 combination zp ZP_WORD:31 [ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] reg byte y [ muls8s::j#2 muls8s::j#1 ] reg byte y [ muls8s::i#2 muls8s::i#1 ] zp ZP_WORD:62 [ muls8s::return#2 ] reg byte x [ muls8s::b#0 ] zp ZP_BYTE:60 [ muls8s::a#0 ] +Uplifting [mul8u] best 308509 combination zp ZP_WORD:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:24 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] reg byte a [ mul8u::b#2 mul8u::b#3 mul8u::b#1 ] zp ZP_WORD:120 [ mul8u::return#3 ] zp ZP_WORD:88 [ mul8u::return#2 ] +Uplifting [muls8u] best 298209 combination zp ZP_WORD:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] reg byte y [ muls8u::i#2 muls8u::i#1 ] zp ZP_WORD:110 [ muls8u::return#2 ] reg byte x [ muls8u::b#0 ] zp ZP_BYTE:108 [ muls8u::a#0 ] +Uplifting [mul8u_compare] best 297009 combination reg byte x [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] zp ZP_WORD:122 [ mul8u_compare::mn#0 ] zp ZP_WORD:112 [ mul8u_compare::ms#0 ] zp ZP_WORD:118 [ mul8u_compare::mf#0 ] +Uplifting [mul8s_compare] best 295809 combination reg byte x [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] zp ZP_WORD:76 [ mul8s_compare::mn#0 ] zp ZP_WORD:64 [ mul8s_compare::ms#0 ] zp ZP_WORD:70 [ mul8s_compare::mf#0 ] +Uplifting [mulf8u] best 295203 combination zp ZP_WORD:116 [ mulf8u::return#2 ] reg byte a [ mulf8u::a#0 ] reg byte x [ mulf8u::b#0 ] zp ZP_WORD:134 [ mulf8u::return#0 ] +Uplifting [mulf8s] best 294597 combination zp ZP_WORD:68 [ mulf8s::return#2 ] zp ZP_WORD:98 [ mulf8s::return#0 ] reg byte a [ mulf8s::a#0 ] reg byte x [ mulf8s::b#0 ] +Uplifting [mulf_init] best 294347 combination zp ZP_WORD:50 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$2 ] reg byte a [ mulf_init::$5 ] reg byte a [ mulf_init::$6 ] zp ZP_WORD:53 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:45 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] zp ZP_BYTE:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_WORD:55 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_WORD:47 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [] best 294062 combination zp ZP_WORD:15 [ print_char_cursor#84 print_char_cursor#140 print_char_cursor#139 print_char_cursor#134 print_char_cursor#152 print_char_cursor#192 print_char_cursor#193 print_char_cursor#133 print_char_cursor#132 print_char_cursor#18 print_char_cursor#31 print_char_cursor#1 print_char_cursor#225 ] zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ] -Uplifting [mulf8s_prepared] best 294044 combination reg byte a [ mulf8s_prepared::$4 ] reg byte a [ mulf8s_prepared::$10 ] zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] zp ZP_WORD:98 [ mulf8s_prepared::return#2 ] reg byte a [ mulf8s_prepared::$5 ] reg byte a [ mulf8s_prepared::$15 ] zp ZP_BYTE:108 [ mulf8s_prepared::$11 ] zp ZP_BYTE:109 [ mulf8s_prepared::$16 ] zp ZP_BYTE:97 [ mulf8s_prepared::b#0 ] -Limited combination testing to 100 combinations of 8192 possible. -Uplifting [mulf_tables_cmp] best 294044 combination zp ZP_WORD:40 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] zp ZP_WORD:42 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] -Uplifting [print_str] best 294044 combination zp ZP_WORD:7 [ print_str::str#16 print_str::str#18 print_str::str#0 ] -Uplifting [print_cls] best 294044 combination zp ZP_WORD:58 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_byte] best 294023 combination reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [print_word] best 294023 combination zp ZP_WORD:11 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 ] -Uplifting [mulf8u_prepared] best 294014 combination reg byte x [ mulf8u_prepared::b#2 mulf8u_prepared::b#3 mulf8u_prepared::b#0 ] zp ZP_WORD:102 [ mulf8u_prepared::return#3 ] zp ZP_WORD:136 [ mulf8u_prepared::return#2 ] zp ZP_WORD:110 [ mulf8u_prepared::return#0 ] -Uplifting [print_sword] best 294014 combination zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 ] -Uplifting [print_sbyte] best 294002 combination reg byte x [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] -Uplifting [print_char] best 293984 combination reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -Uplifting [mulf8u_prepare] best 293975 combination reg byte a [ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#0 ] -Uplifting [mul8u_error] best 293969 combination reg byte x [ mul8u_error::a#0 ] zp ZP_BYTE:129 [ mul8u_error::b#0 ] zp ZP_WORD:130 [ mul8u_error::ms#0 ] zp ZP_WORD:132 [ mul8u_error::mn#0 ] zp ZP_WORD:134 [ mul8u_error::mf#0 ] -Uplifting [mul8s_error] best 293963 combination reg byte x [ mul8s_error::a#0 ] zp ZP_BYTE:79 [ mul8s_error::b#0 ] zp ZP_WORD:80 [ mul8s_error::ms#0 ] zp ZP_WORD:82 [ mul8s_error::mn#0 ] zp ZP_WORD:84 [ mul8s_error::mf#0 ] -Uplifting [print_ln] best 293963 combination -Uplifting [main] best 293963 combination -Uplifting [mulf_init_asm] best 293963 combination +Uplifting [mul8s] best 294034 combination zp ZP_WORD:74 [ mul8s::return#2 ] zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] reg byte y [ mul8s::b#0 ] zp ZP_BYTE:72 [ mul8s::a#0 ] reg byte a [ mul8s::$6 ] reg byte a [ mul8s::$16 ] zp ZP_BYTE:92 [ mul8s::$12 ] zp ZP_BYTE:93 [ mul8s::$17 ] +Limited combination testing to 100 combinations of 2304 possible. +Uplifting [] best 294034 combination zp ZP_WORD:15 [ print_char_cursor#84 print_char_cursor#140 print_char_cursor#139 print_char_cursor#134 print_char_cursor#152 print_char_cursor#192 print_char_cursor#193 print_char_cursor#133 print_char_cursor#132 print_char_cursor#18 print_char_cursor#31 print_char_cursor#1 print_char_cursor#225 ] zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ] +Uplifting [mulf_tables_cmp] best 294034 combination zp ZP_WORD:40 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] zp ZP_WORD:42 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] +Uplifting [print_str] best 294034 combination zp ZP_WORD:7 [ print_str::str#16 print_str::str#18 print_str::str#0 ] +Uplifting [mulf8s_prepared] best 294010 combination zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] zp ZP_WORD:96 [ mulf8s_prepared::return#2 ] reg byte a [ mulf8s_prepared::$5 ] reg byte a [ mulf8s_prepared::$15 ] reg byte a [ mulf8s_prepared::$11 ] reg byte a [ mulf8s_prepared::$16 ] zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] +Limited combination testing to 100 combinations of 512 possible. +Uplifting [print_cls] best 294010 combination zp ZP_WORD:58 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_byte] best 293989 combination reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_word] best 293989 combination zp ZP_WORD:11 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 ] +Uplifting [mulf8u_prepared] best 293980 combination reg byte x [ mulf8u_prepared::b#2 mulf8u_prepared::b#3 mulf8u_prepared::b#0 ] zp ZP_WORD:100 [ mulf8u_prepared::return#3 ] zp ZP_WORD:132 [ mulf8u_prepared::return#2 ] zp ZP_WORD:106 [ mulf8u_prepared::return#0 ] +Uplifting [print_sword] best 293980 combination zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 ] +Uplifting [print_sbyte] best 293968 combination reg byte x [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] +Uplifting [print_char] best 293950 combination reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] +Uplifting [mulf8u_prepare] best 293941 combination reg byte a [ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#0 ] +Uplifting [mul8u_error] best 293935 combination reg byte x [ mul8u_error::a#0 ] zp ZP_BYTE:125 [ mul8u_error::b#0 ] zp ZP_WORD:126 [ mul8u_error::ms#0 ] zp ZP_WORD:128 [ mul8u_error::mn#0 ] zp ZP_WORD:130 [ mul8u_error::mf#0 ] +Uplifting [mul8s_error] best 293929 combination reg byte x [ mul8s_error::a#0 ] zp ZP_BYTE:79 [ mul8s_error::b#0 ] zp ZP_WORD:80 [ mul8s_error::ms#0 ] zp ZP_WORD:82 [ mul8s_error::mn#0 ] zp ZP_WORD:84 [ mul8s_error::mf#0 ] +Uplifting [print_ln] best 293929 combination +Uplifting [main] best 293929 combination +Uplifting [mulf_init_asm] best 293929 combination Attempting to uplift remaining variables inzp ZP_BYTE:60 [ muls8s::a#0 ] -Uplifting [muls8s] best 293963 combination zp ZP_BYTE:60 [ muls8s::a#0 ] +Uplifting [muls8s] best 293929 combination zp ZP_BYTE:60 [ muls8s::a#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] -Uplifting [mul8s_compare] best 293963 combination zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] +Uplifting [mul8s_compare] best 293929 combination zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] -Uplifting [mul8u_compare] best 293963 combination zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:112 [ muls8u::a#0 ] -Uplifting [muls8u] best 293963 combination zp ZP_BYTE:112 [ muls8u::a#0 ] +Uplifting [mul8u_compare] best 293929 combination zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:108 [ muls8u::a#0 ] +Uplifting [muls8u] best 293929 combination zp ZP_BYTE:108 [ muls8u::a#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] -Uplifting [mul8s_compare] best 293963 combination zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] +Uplifting [mul8s_compare] best 293929 combination zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] -Uplifting [mul8u_compare] best 293963 combination zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] +Uplifting [mul8u_compare] best 293929 combination zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Uplifting [mulf_init] best 293963 combination zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] +Uplifting [mulf_init] best 293929 combination zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Uplifting [mulf_init] best 293823 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Uplifting [mulf_init] best 293789 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] -Uplifting [mulf_init] best 293823 combination zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] +Uplifting [mulf_init] best 293789 combination zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:72 [ mul8s::a#0 ] -Uplifting [mul8s] best 293823 combination zp ZP_BYTE:72 [ mul8s::a#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:91 [ mul8s::$6 ] -Uplifting [mul8s] best 293819 combination reg byte a [ mul8s::$6 ] -Attempting to uplift remaining variables inzp ZP_BYTE:92 [ mul8s::$16 ] -Uplifting [mul8s] best 293813 combination reg byte a [ mul8s::$16 ] -Attempting to uplift remaining variables inzp ZP_BYTE:94 [ mul8s::$12 ] -Uplifting [mul8s] best 293807 combination reg byte a [ mul8s::$12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:95 [ mul8s::$17 ] -Uplifting [mul8s] best 293801 combination reg byte a [ mul8s::$17 ] -Attempting to uplift remaining variables inzp ZP_BYTE:108 [ mulf8s_prepared::$11 ] -Uplifting [mulf8s_prepared] best 293795 combination reg byte a [ mulf8s_prepared::$11 ] -Attempting to uplift remaining variables inzp ZP_BYTE:109 [ mulf8s_prepared::$16 ] -Uplifting [mulf8s_prepared] best 293789 combination reg byte a [ mulf8s_prepared::$16 ] +Uplifting [mul8s] best 293789 combination zp ZP_BYTE:72 [ mul8s::a#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:92 [ mul8s::$12 ] +Uplifting [mul8s] best 293783 combination reg byte a [ mul8s::$12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:93 [ mul8s::$17 ] +Uplifting [mul8s] best 293777 combination reg byte a [ mul8s::$17 ] Attempting to uplift remaining variables inzp ZP_BYTE:79 [ mul8s_error::b#0 ] -Uplifting [mul8s_error] best 293789 combination zp ZP_BYTE:79 [ mul8s_error::b#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:129 [ mul8u_error::b#0 ] -Uplifting [mul8u_error] best 293789 combination zp ZP_BYTE:129 [ mul8u_error::b#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:97 [ mulf8s_prepared::b#0 ] -Uplifting [mulf8s_prepared] best 293789 combination zp ZP_BYTE:97 [ mulf8s_prepared::b#0 ] +Uplifting [mul8s_error] best 293777 combination zp ZP_BYTE:79 [ mul8s_error::b#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] +Uplifting [mulf8s_prepared] best 293777 combination zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:125 [ mul8u_error::b#0 ] +Uplifting [mul8u_error] best 293777 combination zp ZP_BYTE:125 [ mul8u_error::b#0 ] Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] ] with [ zp ZP_BYTE:60 [ muls8s::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 muls8s::a#0 ] ] with [ zp ZP_BYTE:72 [ mul8s::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] ] with [ zp ZP_BYTE:79 [ mul8s_error::b#0 ] ] - score: 1 @@ -7729,39 +7665,39 @@ Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_swor Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 ] ] with [ zp ZP_WORD:80 [ mul8s_error::ms#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] ] with [ zp ZP_WORD:74 [ mul8s::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s::return#2 ] ] with [ zp ZP_WORD:88 [ mul8u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:124 [ mul8u::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] ] with [ zp ZP_WORD:98 [ mulf8s_prepared::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 ] ] with [ zp ZP_WORD:102 [ mulf8u_prepared::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:120 [ mul8u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] ] with [ zp ZP_WORD:96 [ mulf8s_prepared::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 ] ] with [ zp ZP_WORD:100 [ mulf8u_prepared::return#3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:31 [ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] ] with [ zp ZP_WORD:62 [ muls8s::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] ] with [ zp ZP_BYTE:112 [ muls8u::a#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] ] with [ zp ZP_BYTE:129 [ mul8u_error::b#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] ] with [ zp ZP_WORD:114 [ muls8u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] ] with [ zp ZP_BYTE:108 [ muls8u::a#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] ] with [ zp ZP_BYTE:125 [ mul8u_error::b#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] ] with [ zp ZP_WORD:110 [ muls8u::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:68 [ mulf8s::return#2 ] ] with [ zp ZP_WORD:70 [ mul8s_compare::mf#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:68 [ mulf8s::return#2 mul8s_compare::mf#0 ] ] with [ zp ZP_WORD:100 [ mulf8s::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:68 [ mulf8s::return#2 mul8s_compare::mf#0 ] ] with [ zp ZP_WORD:98 [ mulf8s::return#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:76 [ mul8s_compare::mn#0 ] ] with [ zp ZP_WORD:82 [ mul8s_error::mn#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:110 [ mulf8u_prepared::return#0 ] ] with [ zp ZP_WORD:136 [ mulf8u_prepared::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:116 [ mul8u_compare::ms#0 ] ] with [ zp ZP_WORD:130 [ mul8u_error::ms#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:120 [ mulf8u::return#2 ] ] with [ zp ZP_WORD:122 [ mul8u_compare::mf#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:120 [ mulf8u::return#2 mul8u_compare::mf#0 ] ] with [ zp ZP_WORD:138 [ mulf8u::return#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:126 [ mul8u_compare::mn#0 ] ] with [ zp ZP_WORD:132 [ mul8u_error::mn#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:106 [ mulf8u_prepared::return#0 ] ] with [ zp ZP_WORD:132 [ mulf8u_prepared::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:112 [ mul8u_compare::ms#0 ] ] with [ zp ZP_WORD:126 [ mul8u_error::ms#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:116 [ mulf8u::return#2 ] ] with [ zp ZP_WORD:118 [ mul8u_compare::mf#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:116 [ mulf8u::return#2 mul8u_compare::mf#0 ] ] with [ zp ZP_WORD:134 [ mulf8u::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:122 [ mul8u_compare::mn#0 ] ] with [ zp ZP_WORD:128 [ mul8u_error::mn#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 mul8s_error::ms#0 ] ] with [ zp ZP_WORD:42 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] ] with [ zp ZP_WORD:64 [ mul8s_compare::ms#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 ] ] with [ zp ZP_WORD:116 [ mul8u_compare::ms#0 mul8u_error::ms#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 ] ] with [ zp ZP_WORD:112 [ mul8u_compare::ms#0 mul8u_error::ms#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s::return#2 mul8u::return#2 ] ] with [ zp ZP_WORD:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s::return#2 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 ] ] with [ zp ZP_WORD:76 [ mul8s_compare::mn#0 mul8s_error::mn#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8u_prepared::return#3 ] ] with [ zp ZP_WORD:68 [ mulf8s::return#2 mul8s_compare::mf#0 mulf8s::return#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8s::return#0 ] ] with [ zp ZP_WORD:110 [ mulf8u_prepared::return#0 mulf8u_prepared::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:120 [ mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 ] ] with [ zp ZP_WORD:134 [ mul8u_error::mf#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8s::return#0 ] ] with [ zp ZP_WORD:106 [ mulf8u_prepared::return#0 mulf8u_prepared::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:116 [ mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 ] ] with [ zp ZP_WORD:130 [ mul8u_error::mf#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 mul8u_compare::ms#0 mul8u_error::ms#0 ] ] with [ zp ZP_WORD:31 [ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 muls8s::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 mul8u_compare::ms#0 mul8u_error::ms#0 muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 muls8s::return#2 ] ] with [ zp ZP_WORD:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 muls8u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s::return#2 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mul8s_compare::mn#0 mul8s_error::mn#0 ] ] with [ zp ZP_WORD:126 [ mul8u_compare::mn#0 mul8u_error::mn#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s::return#2 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mul8s_compare::mn#0 mul8s_error::mn#0 ] ] with [ zp ZP_WORD:122 [ mul8u_compare::mn#0 mul8u_error::mn#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8s::return#0 mulf8u_prepared::return#0 mulf8u_prepared::return#2 ] ] with [ zp ZP_WORD:84 [ mul8s_error::mf#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8s::return#0 mulf8u_prepared::return#0 mulf8u_prepared::return#2 mul8s_error::mf#0 ] ] with [ zp ZP_WORD:120 [ mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 mul8u_error::mf#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8s::return#0 mulf8u_prepared::return#0 mulf8u_prepared::return#2 mul8s_error::mf#0 ] ] with [ zp ZP_WORD:116 [ mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 mul8u_error::mf#0 ] ] - score: 1 Coalescing zero page register [ zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 muls8s::a#0 mul8s::a#0 ] ] with [ zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 ] ] Coalescing zero page register [ zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 muls8s::a#0 mul8s::a#0 mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 ] ] with [ zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] ] Coalescing zero page register [ zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 muls8s::a#0 mul8s::a#0 mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] ] with [ zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] ] Coalescing zero page register [ zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 mul8s_error::b#0 ] ] with [ zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 mul8s_error::b#0 mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 ] ] with [ zp ZP_BYTE:97 [ mulf8s_prepared::b#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 mul8s_error::b#0 mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 ] ] with [ zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] ] Coalescing zero page register [ zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ] ] with [ zp ZP_WORD:40 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] ] Coalescing zero page register [ zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] ] with [ zp ZP_WORD:45 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] ] Coalescing zero page register [ zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] ] with [ zp ZP_WORD:53 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] ] @@ -7808,7 +7744,7 @@ main: { lda #5 sta BGCOL //SEG11 [5] call print_cls - //SEG12 [340] phi from main to print_cls [phi:main->print_cls] + //SEG12 [336] 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] @@ -7817,7 +7753,7 @@ main: { //SEG14 main::@1 b1: //SEG15 [7] call mulf_init - //SEG16 [311] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG16 [307] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] mulf_init_from_b1: jsr mulf_init //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -7833,7 +7769,7 @@ main: { //SEG21 main::@3 b3: //SEG22 [11] call mulf_tables_cmp - //SEG23 [284] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp] + //SEG23 [280] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp] mulf_tables_cmp_from_b3: jsr mulf_tables_cmp //SEG24 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] @@ -7842,7 +7778,7 @@ main: { //SEG25 main::@4 b4: //SEG26 [13] call mul8u_compare - //SEG27 [206] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare] + //SEG27 [202] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare] mul8u_compare_from_b4: jsr mul8u_compare //SEG28 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] @@ -7907,7 +7843,7 @@ mul8s_compare: { //SEG52 [26] (signed byte) mulf8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsxx=vbsz1 ldx b //SEG53 [27] call mulf8s - //SEG54 [160] phi from mul8s_compare::@12 to mulf8s [phi:mul8s_compare::@12->mulf8s] + //SEG54 [158] phi from mul8s_compare::@12 to mulf8s [phi:mul8s_compare::@12->mulf8s] mulf8s_from_b12: jsr mulf8s //SEG55 [28] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 @@ -8492,10 +8428,10 @@ mul8s: { //SEG276 [132] (byte~) mul8u::a#8 ← (byte)(signed byte) mul8s::a#0 -- vbuxx=vbuz1 ldx a //SEG277 [133] call mul8u - //SEG278 [149] phi from mul8s to mul8u [phi:mul8s->mul8u] + //SEG278 [147] phi from mul8s to mul8u [phi:mul8s->mul8u] mul8u_from_mul8s: - //SEG279 [149] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8s->mul8u#0] -- register_copy - //SEG280 [149] phi (byte) mul8u::b#2 = (byte~) mul8u::b#3 [phi:mul8s->mul8u#1] -- register_copy + //SEG279 [147] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8s->mul8u#0] -- register_copy + //SEG280 [147] phi (byte) mul8u::b#2 = (byte~) mul8u::b#3 [phi:mul8s->mul8u#1] -- register_copy jsr mul8u //SEG281 [134] (word) mul8u::return#2 ← (word) mul8u::res#2 jmp b6 @@ -8509,94 +8445,90 @@ mul8s: { jmp b3 //SEG285 mul8s::@3 b3: - //SEG286 [137] (byte~) mul8s::$5 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 + //SEG286 [137] (byte~) mul8s::$6 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG287 [138] (byte~) mul8s::$6 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 - lda m+1 - //SEG288 [139] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuaa_minus_vbuyy + //SEG287 [138] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuaa_minus_vbuyy sty $ff sec sbc $ff - //SEG289 [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuaa + //SEG288 [139] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG290 [141] phi from mul8s::@3 mul8s::@6 to mul8s::@1 [phi:mul8s::@3/mul8s::@6->mul8s::@1] + //SEG289 [140] phi from mul8s::@3 mul8s::@6 to mul8s::@1 [phi:mul8s::@3/mul8s::@6->mul8s::@1] b1_from_b3: b1_from_b6: - //SEG291 [141] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@6->mul8s::@1#0] -- register_copy + //SEG290 [140] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@6->mul8s::@1#0] -- register_copy jmp b1 - //SEG292 mul8s::@1 + //SEG291 mul8s::@1 b1: - //SEG293 [142] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 -- vbsyy_ge_0_then_la1 + //SEG292 [141] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 -- vbsyy_ge_0_then_la1 cpy #0 bpl b2_from_b1 jmp b4 - //SEG294 mul8s::@4 + //SEG293 mul8s::@4 b4: - //SEG295 [143] (byte~) mul8s::$11 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 + //SEG294 [142] (byte~) mul8s::$12 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG296 [144] (byte~) mul8s::$12 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 - lda m+1 - //SEG297 [145] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 -- vbuaa=vbuaa_minus_vbuz1 + //SEG295 [143] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 -- vbuaa=vbuaa_minus_vbuz1 sec sbc a - //SEG298 [146] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuaa + //SEG296 [144] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG299 [147] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] + //SEG297 [145] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] b2_from_b1: b2_from_b4: - //SEG300 [147] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy + //SEG298 [145] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy jmp b2 - //SEG301 mul8s::@2 + //SEG299 mul8s::@2 b2: jmp breturn - //SEG302 mul8s::@return + //SEG300 mul8s::@return breturn: - //SEG303 [148] return + //SEG301 [146] return rts } -//SEG304 mul8u +//SEG302 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word // mul8u(byte register(X) a, byte register(A) b) mul8u: { .label mb = 6 .label res = $c .label return = $c - //SEG305 [150] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa + //SEG303 [148] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa sta mb lda #0 sta mb+1 - //SEG306 [151] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG304 [149] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG307 [151] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG308 [151] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG305 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG306 [149] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #<0 sta res lda #>0 sta res+1 - //SEG309 [151] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG307 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG310 mul8u::@1 + //SEG308 mul8u::@1 b1: - //SEG311 [152] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG309 [150] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 jmp breturn - //SEG312 mul8u::@return + //SEG310 mul8u::@return breturn: - //SEG313 [153] return + //SEG311 [151] return rts - //SEG314 mul8u::@2 + //SEG312 mul8u::@2 b2: - //SEG315 [154] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG313 [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG316 [155] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 + //SEG314 [153] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4_from_b2 jmp b7 - //SEG317 mul8u::@7 + //SEG315 mul8u::@7 b7: - //SEG318 [156] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG316 [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -8604,60 +8536,60 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG319 [157] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG317 [155] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] b4_from_b2: b4_from_b7: - //SEG320 [157] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG318 [155] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy jmp b4 - //SEG321 mul8u::@4 + //SEG319 mul8u::@4 b4: - //SEG322 [158] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 + //SEG320 [156] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG323 [159] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG321 [157] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG324 [151] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG322 [149] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] b1_from_b4: - //SEG325 [151] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG326 [151] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG327 [151] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG323 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG324 [149] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG325 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG328 mulf8s +//SEG326 mulf8s // Fast multiply two signed bytes to a word result // mulf8s(signed byte register(A) a, signed byte register(X) b) mulf8s: { .label return = $e jmp mulf8s_prepare1 - //SEG329 mulf8s::mulf8s_prepare1 + //SEG327 mulf8s::mulf8s_prepare1 mulf8s_prepare1: - //SEG330 [161] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 - //SEG331 [162] call mulf8u_prepare - //SEG332 [190] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] + //SEG328 [159] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 + //SEG329 [160] call mulf8u_prepare + //SEG330 [186] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] mulf8u_prepare_from_mulf8s_prepare1: - //SEG333 [190] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy + //SEG331 [186] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare jmp b2 - //SEG334 mulf8s::@2 + //SEG332 mulf8s::@2 b2: - //SEG335 [163] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsxx + //SEG333 [161] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsxx stx mulf8s_prepared.b - //SEG336 [164] call mulf8s_prepared + //SEG334 [162] call mulf8s_prepared jsr mulf8s_prepared - //SEG337 [165] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 + //SEG335 [163] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 jmp b4 - //SEG338 mulf8s::@4 + //SEG336 mulf8s::@4 b4: - //SEG339 [166] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 + //SEG337 [164] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 jmp breturn - //SEG340 mulf8s::@return + //SEG338 mulf8s::@return breturn: - //SEG341 [167] return + //SEG339 [165] return rts } -//SEG342 mulf8s_prepared +//SEG340 mulf8s_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8s_prepare(byte a) // mulf8s_prepared(signed byte zeropage(3) b) @@ -8666,71 +8598,67 @@ mulf8s_prepared: { .label m = $e .label b = 3 .label return = $e - //SEG343 [168] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuxx=vbuz1 + //SEG341 [166] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuxx=vbuz1 ldx b - //SEG344 [169] call mulf8u_prepared - //SEG345 [185] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] + //SEG342 [167] call mulf8u_prepared + //SEG343 [181] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] mulf8u_prepared_from_mulf8s_prepared: - //SEG346 [185] phi (byte) mulf8u_prepared::b#2 = (byte~) mulf8u_prepared::b#3 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy + //SEG344 [181] phi (byte) mulf8u_prepared::b#2 = (byte~) mulf8u_prepared::b#3 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG347 [170] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 + //SEG345 [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 jmp b6 - //SEG348 mulf8s_prepared::@6 + //SEG346 mulf8s_prepared::@6 b6: - //SEG349 [171] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 - //SEG350 [172] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 + //SEG347 [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 + //SEG348 [170] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 lda memA cmp #0 bpl b1_from_b6 jmp b3 - //SEG351 mulf8s_prepared::@3 + //SEG349 mulf8s_prepared::@3 b3: - //SEG352 [173] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 + //SEG350 [171] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG353 [174] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 - lda m+1 - //SEG354 [175] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuaa_minus_vbuz1 + //SEG351 [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuaa_minus_vbuz1 sec sbc b - //SEG355 [176] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa + //SEG352 [173] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG356 [177] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] + //SEG353 [174] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] b1_from_b3: b1_from_b6: - //SEG357 [177] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy + //SEG354 [174] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy jmp b1 - //SEG358 mulf8s_prepared::@1 + //SEG355 mulf8s_prepared::@1 b1: - //SEG359 [178] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 + //SEG356 [175] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 lda b cmp #0 bpl b2_from_b1 jmp b4 - //SEG360 mulf8s_prepared::@4 + //SEG357 mulf8s_prepared::@4 b4: - //SEG361 [179] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 + //SEG358 [176] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG362 [180] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 - lda m+1 - //SEG363 [181] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuaa=vbuaa_minus__deref_pbuc1 + //SEG359 [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuaa=vbuaa_minus__deref_pbuc1 sec sbc memA - //SEG364 [182] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa + //SEG360 [178] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG365 [183] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] + //SEG361 [179] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] b2_from_b1: b2_from_b4: - //SEG366 [183] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy + //SEG362 [179] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy jmp b2 - //SEG367 mulf8s_prepared::@2 + //SEG363 mulf8s_prepared::@2 b2: jmp breturn - //SEG368 mulf8s_prepared::@return + //SEG364 mulf8s_prepared::@return breturn: - //SEG369 [184] return + //SEG365 [180] return rts } -//SEG370 mulf8u_prepared +//SEG366 mulf8u_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8u_prepare(byte a) // mulf8u_prepared(byte register(X) b) @@ -8738,9 +8666,9 @@ mulf8u_prepared: { .label resL = $fe .label memB = $ff .label return = $e - //SEG371 [186] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuxx + //SEG367 [182] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuxx stx memB - //SEG372 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } + //SEG368 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } ldx memB sec sm1: @@ -8753,25 +8681,25 @@ mulf8u_prepared: { sm4: sbc mulf_sqr2_hi,x sta memB - //SEG373 [188] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG369 [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda resL sta return lda memB sta return+1 jmp breturn - //SEG374 mulf8u_prepared::@return + //SEG370 mulf8u_prepared::@return breturn: - //SEG375 [189] return + //SEG371 [185] return rts } -//SEG376 mulf8u_prepare +//SEG372 mulf8u_prepare // Prepare for fast multiply with an unsigned byte to a word result // mulf8u_prepare(byte register(A) a) mulf8u_prepare: { .label memA = $fd - //SEG377 [191] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa + //SEG373 [187] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa sta memA - //SEG378 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } + //SEG374 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } lda memA sta mulf8u_prepared.sm1+1 sta mulf8u_prepared.sm3+1 @@ -8779,12 +8707,12 @@ mulf8u_prepare: { sta mulf8u_prepared.sm2+1 sta mulf8u_prepared.sm4+1 jmp breturn - //SEG379 mulf8u_prepare::@return + //SEG375 mulf8u_prepare::@return breturn: - //SEG380 [193] return + //SEG376 [189] return rts } -//SEG381 muls8s +//SEG377 muls8s // Slow multiplication of signed bytes // Perform a signed multiplication by repeated addition/subtraction // muls8s(signed byte zeropage(2) a, signed byte register(X) b) @@ -8792,35 +8720,35 @@ muls8s: { .label m = 8 .label return = 8 .label a = 2 - //SEG382 [194] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 -- vbsz1_lt_0_then_la1 + //SEG378 [190] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 -- vbsz1_lt_0_then_la1 lda a bmi b5_from_muls8s jmp b6 - //SEG383 muls8s::@6 + //SEG379 muls8s::@6 b6: - //SEG384 [195] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 -- vbsz1_le_0_then_la1 + //SEG380 [191] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 -- vbsz1_le_0_then_la1 lda a cmp #1 bmi b4_from_b6 - //SEG385 [196] phi from muls8s::@6 to muls8s::@3 [phi:muls8s::@6->muls8s::@3] + //SEG381 [192] phi from muls8s::@6 to muls8s::@3 [phi:muls8s::@6->muls8s::@3] b3_from_b6: - //SEG386 [196] phi (signed byte) muls8s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#0] -- vbsyy=vbuc1 + //SEG382 [192] phi (signed byte) muls8s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#0] -- vbsyy=vbuc1 lda #0 tay - //SEG387 [196] phi (signed word) muls8s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#1] -- vwsz1=vbuc1 + //SEG383 [192] phi (signed word) muls8s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#1] -- vwsz1=vbuc1 lda #<0 sta m lda #>0 sta m+1 jmp b3 - //SEG388 [196] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] + //SEG384 [192] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] b3_from_b3: - //SEG389 [196] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy - //SEG390 [196] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy + //SEG385 [192] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy + //SEG386 [192] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy jmp b3 - //SEG391 muls8s::@3 + //SEG387 muls8s::@3 b3: - //SEG392 [197] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsxx + //SEG388 [193] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsxx txa sta $fe ora #$7f @@ -8835,50 +8763,50 @@ muls8s: { lda m+1 adc $ff sta m+1 - //SEG393 [198] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsyy=_inc_vbsyy + //SEG389 [194] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsyy=_inc_vbsyy iny - //SEG394 [199] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsyy_neq_vbsz1_then_la1 + //SEG390 [195] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsyy_neq_vbsz1_then_la1 cpy a bne b3_from_b3 - //SEG395 [200] phi from muls8s::@3 muls8s::@5 to muls8s::@4 [phi:muls8s::@3/muls8s::@5->muls8s::@4] + //SEG391 [196] phi from muls8s::@3 muls8s::@5 to muls8s::@4 [phi:muls8s::@3/muls8s::@5->muls8s::@4] b4_from_b3: b4_from_b5: - //SEG396 [200] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@5->muls8s::@4#0] -- register_copy + //SEG392 [196] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@5->muls8s::@4#0] -- register_copy jmp b4 - //SEG397 [200] phi from muls8s::@6 to muls8s::@4 [phi:muls8s::@6->muls8s::@4] + //SEG393 [196] phi from muls8s::@6 to muls8s::@4 [phi:muls8s::@6->muls8s::@4] b4_from_b6: - //SEG398 [200] phi (signed word) muls8s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@4#0] -- vwsz1=vbuc1 + //SEG394 [196] phi (signed word) muls8s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@4#0] -- vwsz1=vbuc1 lda #<0 sta return lda #>0 sta return+1 jmp b4 - //SEG399 muls8s::@4 + //SEG395 muls8s::@4 b4: jmp breturn - //SEG400 muls8s::@return + //SEG396 muls8s::@return breturn: - //SEG401 [201] return + //SEG397 [197] return rts - //SEG402 [202] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5] + //SEG398 [198] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5] b5_from_muls8s: - //SEG403 [202] phi (signed byte) muls8s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#0] -- vbsyy=vbuc1 + //SEG399 [198] phi (signed byte) muls8s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#0] -- vbsyy=vbuc1 lda #0 tay - //SEG404 [202] phi (signed word) muls8s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#1] -- vwsz1=vbuc1 + //SEG400 [198] phi (signed word) muls8s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#1] -- vwsz1=vbuc1 lda #<0 sta m lda #>0 sta m+1 jmp b5 - //SEG405 [202] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5] + //SEG401 [198] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5] b5_from_b5: - //SEG406 [202] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@5->muls8s::@5#0] -- register_copy - //SEG407 [202] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@5->muls8s::@5#1] -- register_copy + //SEG402 [198] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@5->muls8s::@5#0] -- register_copy + //SEG403 [198] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@5->muls8s::@5#1] -- register_copy jmp b5 - //SEG408 muls8s::@5 + //SEG404 muls8s::@5 b5: - //SEG409 [203] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsxx + //SEG405 [199] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsxx txa sta $fe ora #$7f @@ -8893,14 +8821,14 @@ muls8s: { lda m+1 sbc $ff sta m+1 - //SEG410 [204] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsyy=_dec_vbsyy + //SEG406 [200] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsyy=_dec_vbsyy dey - //SEG411 [205] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 -- vbsyy_neq_vbsz1_then_la1 + //SEG407 [201] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 -- vbsyy_neq_vbsz1_then_la1 cpy a bne b5_from_b5 jmp b4_from_b5 } -//SEG412 mul8u_compare +//SEG408 mul8u_compare // Perform all possible byte multiplications (slow and fast) and compare the results mul8u_compare: { .label ms = 8 @@ -8908,67 +8836,67 @@ mul8u_compare: { .label mn = $c .label b = 3 .label a = 2 - //SEG413 [207] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] + //SEG409 [203] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] b1_from_mul8u_compare: - //SEG414 [207] phi (byte) mul8u_compare::a#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 + //SEG410 [203] phi (byte) mul8u_compare::a#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta a jmp b1 - //SEG415 [207] phi from mul8u_compare::@10 to mul8u_compare::@1 [phi:mul8u_compare::@10->mul8u_compare::@1] + //SEG411 [203] phi from mul8u_compare::@10 to mul8u_compare::@1 [phi:mul8u_compare::@10->mul8u_compare::@1] b1_from_b10: - //SEG416 [207] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@10->mul8u_compare::@1#0] -- register_copy + //SEG412 [203] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@10->mul8u_compare::@1#0] -- register_copy jmp b1 - //SEG417 mul8u_compare::@1 + //SEG413 mul8u_compare::@1 b1: - //SEG418 [208] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] + //SEG414 [204] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] b2_from_b1: - //SEG419 [208] phi (byte) mul8u_compare::b#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 + //SEG415 [204] phi (byte) mul8u_compare::b#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 lda #0 sta b jmp b2 - //SEG420 [208] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] + //SEG416 [204] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] b2_from_b5: - //SEG421 [208] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy + //SEG417 [204] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy jmp b2 - //SEG422 mul8u_compare::@2 + //SEG418 mul8u_compare::@2 b2: - //SEG423 [209] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 - //SEG424 [210] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 + //SEG419 [205] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 + //SEG420 [206] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 ldx b - //SEG425 [211] call muls8u + //SEG421 [207] call muls8u jsr muls8u - //SEG426 [212] (word) muls8u::return#2 ← (word) muls8u::return#0 + //SEG422 [208] (word) muls8u::return#2 ← (word) muls8u::return#0 jmp b12 - //SEG427 mul8u_compare::@12 + //SEG423 mul8u_compare::@12 b12: - //SEG428 [213] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 - //SEG429 [214] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuaa=vbuz1 + //SEG424 [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 + //SEG425 [210] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuaa=vbuz1 lda a - //SEG430 [215] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 + //SEG426 [211] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 ldx b - //SEG431 [216] call mulf8u + //SEG427 [212] call mulf8u jsr mulf8u - //SEG432 [217] (word) mulf8u::return#2 ← (word) mulf8u::return#0 + //SEG428 [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0 jmp b13 - //SEG433 mul8u_compare::@13 + //SEG429 mul8u_compare::@13 b13: - //SEG434 [218] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 - //SEG435 [219] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 + //SEG430 [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 + //SEG431 [215] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 ldx a - //SEG436 [220] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuaa=vbuz1 + //SEG432 [216] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuaa=vbuz1 lda b - //SEG437 [221] call mul8u - //SEG438 [149] phi from mul8u_compare::@13 to mul8u [phi:mul8u_compare::@13->mul8u] + //SEG433 [217] call mul8u + //SEG434 [147] phi from mul8u_compare::@13 to mul8u [phi:mul8u_compare::@13->mul8u] mul8u_from_b13: - //SEG439 [149] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@13->mul8u#0] -- register_copy - //SEG440 [149] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mul8u_compare::@13->mul8u#1] -- register_copy + //SEG435 [147] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@13->mul8u#0] -- register_copy + //SEG436 [147] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mul8u_compare::@13->mul8u#1] -- register_copy jsr mul8u - //SEG441 [222] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG437 [218] (word) mul8u::return#3 ← (word) mul8u::res#2 jmp b14 - //SEG442 mul8u_compare::@14 + //SEG438 mul8u_compare::@14 b14: - //SEG443 [223] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 - //SEG444 [224] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 + //SEG439 [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 + //SEG440 [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 lda ms cmp mf bne !+ @@ -8976,24 +8904,24 @@ mul8u_compare: { cmp mf+1 beq b3_from_b14 !: - //SEG445 [225] phi from mul8u_compare::@14 to mul8u_compare::@6 [phi:mul8u_compare::@14->mul8u_compare::@6] + //SEG441 [221] phi from mul8u_compare::@14 to mul8u_compare::@6 [phi:mul8u_compare::@14->mul8u_compare::@6] b6_from_b14: jmp b6 - //SEG446 mul8u_compare::@6 + //SEG442 mul8u_compare::@6 b6: - //SEG447 [226] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] + //SEG443 [222] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] b3_from_b6: - //SEG448 [226] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuxx=vbuc1 + //SEG444 [222] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG449 [226] phi from mul8u_compare::@14 to mul8u_compare::@3 [phi:mul8u_compare::@14->mul8u_compare::@3] + //SEG445 [222] phi from mul8u_compare::@14 to mul8u_compare::@3 [phi:mul8u_compare::@14->mul8u_compare::@3] b3_from_b14: - //SEG450 [226] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8u_compare::@14->mul8u_compare::@3#0] -- vbuxx=vbuc1 + //SEG446 [222] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8u_compare::@14->mul8u_compare::@3#0] -- vbuxx=vbuc1 ldx #1 jmp b3 - //SEG451 mul8u_compare::@3 + //SEG447 mul8u_compare::@3 b3: - //SEG452 [227] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 -- vwuz1_eq_vwuz2_then_la1 + //SEG448 [223] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 -- vwuz1_eq_vwuz2_then_la1 lda ms cmp mn bne !+ @@ -9001,278 +8929,278 @@ mul8u_compare: { cmp mn+1 beq b20_from_b3 !: - //SEG453 [228] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] + //SEG449 [224] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] b4_from_b3: - //SEG454 [228] phi (byte) mul8u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuxx=vbuc1 + //SEG450 [224] phi (byte) mul8u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuxx=vbuc1 ldx #0 jmp b4 - //SEG455 mul8u_compare::@4 + //SEG451 mul8u_compare::@4 b4: - //SEG456 [229] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 -- vbuxx_neq_0_then_la1 + //SEG452 [225] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 -- vbuxx_neq_0_then_la1 cpx #0 bne b5 jmp b8 - //SEG457 mul8u_compare::@8 + //SEG453 mul8u_compare::@8 b8: - //SEG458 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG454 [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG459 [231] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 + //SEG455 [227] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 ldx a - //SEG460 [232] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 - //SEG461 [233] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 - //SEG462 [234] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 - //SEG463 [235] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 - //SEG464 [236] call mul8u_error - //SEG465 [247] phi from mul8u_compare::@8 to mul8u_error [phi:mul8u_compare::@8->mul8u_error] + //SEG456 [228] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 + //SEG457 [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 + //SEG458 [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 + //SEG459 [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 + //SEG460 [232] call mul8u_error + //SEG461 [243] phi from mul8u_compare::@8 to mul8u_error [phi:mul8u_compare::@8->mul8u_error] mul8u_error_from_b8: jsr mul8u_error jmp breturn - //SEG466 mul8u_compare::@return + //SEG462 mul8u_compare::@return breturn: - //SEG467 [237] return + //SEG463 [233] return rts - //SEG468 mul8u_compare::@5 + //SEG464 mul8u_compare::@5 b5: - //SEG469 [238] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 + //SEG465 [234] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 inc b - //SEG470 [239] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 + //SEG466 [235] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 lda b cmp #0 bne b2_from_b5 jmp b10 - //SEG471 mul8u_compare::@10 + //SEG467 mul8u_compare::@10 b10: - //SEG472 [240] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 + //SEG468 [236] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 inc a - //SEG473 [241] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 + //SEG469 [237] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 lda a cmp #0 bne b1_from_b10 - //SEG474 [242] phi from mul8u_compare::@10 to mul8u_compare::@11 [phi:mul8u_compare::@10->mul8u_compare::@11] + //SEG470 [238] phi from mul8u_compare::@10 to mul8u_compare::@11 [phi:mul8u_compare::@10->mul8u_compare::@11] b11_from_b10: jmp b11 - //SEG475 mul8u_compare::@11 + //SEG471 mul8u_compare::@11 b11: - //SEG476 [243] call print_str - //SEG477 [63] phi from mul8u_compare::@11 to print_str [phi:mul8u_compare::@11->print_str] + //SEG472 [239] call print_str + //SEG473 [63] phi from mul8u_compare::@11 to print_str [phi:mul8u_compare::@11->print_str] print_str_from_b11: - //SEG478 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_compare::@11->print_str#0] -- register_copy - //SEG479 [63] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@11->print_str#1] -- pbuz1=pbuc1 + //SEG474 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_compare::@11->print_str#0] -- register_copy + //SEG475 [63] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@11->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG480 [244] phi from mul8u_compare::@11 to mul8u_compare::@16 [phi:mul8u_compare::@11->mul8u_compare::@16] + //SEG476 [240] phi from mul8u_compare::@11 to mul8u_compare::@16 [phi:mul8u_compare::@11->mul8u_compare::@16] b16_from_b11: jmp b16 - //SEG481 mul8u_compare::@16 + //SEG477 mul8u_compare::@16 b16: - //SEG482 [245] call print_ln - //SEG483 [58] phi from mul8u_compare::@16 to print_ln [phi:mul8u_compare::@16->print_ln] + //SEG478 [241] call print_ln + //SEG479 [58] phi from mul8u_compare::@16 to print_ln [phi:mul8u_compare::@16->print_ln] print_ln_from_b16: - //SEG484 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8u_compare::@16->print_ln#0] -- register_copy - //SEG485 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_compare::@16->print_ln#1] -- register_copy + //SEG480 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8u_compare::@16->print_ln#0] -- register_copy + //SEG481 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_compare::@16->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG486 [246] phi from mul8u_compare::@3 to mul8u_compare::@20 [phi:mul8u_compare::@3->mul8u_compare::@20] + //SEG482 [242] phi from mul8u_compare::@3 to mul8u_compare::@20 [phi:mul8u_compare::@3->mul8u_compare::@20] b20_from_b3: jmp b20 - //SEG487 mul8u_compare::@20 + //SEG483 mul8u_compare::@20 b20: - //SEG488 [228] phi from mul8u_compare::@20 to mul8u_compare::@4 [phi:mul8u_compare::@20->mul8u_compare::@4] + //SEG484 [224] phi from mul8u_compare::@20 to mul8u_compare::@4 [phi:mul8u_compare::@20->mul8u_compare::@4] b4_from_b20: - //SEG489 [228] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@20->mul8u_compare::@4#0] -- register_copy + //SEG485 [224] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@20->mul8u_compare::@4#0] -- register_copy jmp b4 str: .text "multiply results match!@" } -//SEG490 mul8u_error +//SEG486 mul8u_error // mul8u_error(byte register(X) a, byte zeropage(3) b, word zeropage(8) ms, word zeropage($c) mn, word zeropage($e) mf) mul8u_error: { .label b = 3 .label ms = 8 .label mn = $c .label mf = $e - //SEG491 [248] call print_str - //SEG492 [63] phi from mul8u_error to print_str [phi:mul8u_error->print_str] + //SEG487 [244] call print_str + //SEG488 [63] phi from mul8u_error to print_str [phi:mul8u_error->print_str] print_str_from_mul8u_error: - //SEG493 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_error->print_str#0] -- register_copy - //SEG494 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 + //SEG489 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_error->print_str#0] -- register_copy + //SEG490 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b1 - //SEG495 mul8u_error::@1 + //SEG491 mul8u_error::@1 b1: - //SEG496 [249] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 - //SEG497 [250] call print_byte - //SEG498 [108] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] + //SEG492 [245] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 + //SEG493 [246] call print_byte + //SEG494 [108] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] print_byte_from_b1: - //SEG499 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@1->print_byte#0] -- register_copy - //SEG500 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy + //SEG495 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@1->print_byte#0] -- register_copy + //SEG496 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy jsr print_byte - //SEG501 [251] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] + //SEG497 [247] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] b2_from_b1: jmp b2 - //SEG502 mul8u_error::@2 + //SEG498 mul8u_error::@2 b2: - //SEG503 [252] call print_str - //SEG504 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] + //SEG499 [248] call print_str + //SEG500 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] print_str_from_b2: - //SEG505 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy - //SEG506 [63] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG501 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy + //SEG502 [63] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b3 - //SEG507 mul8u_error::@3 + //SEG503 mul8u_error::@3 b3: - //SEG508 [253] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuxx=vbuz1 + //SEG504 [249] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuxx=vbuz1 ldx b - //SEG509 [254] call print_byte - //SEG510 [108] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] + //SEG505 [250] call print_byte + //SEG506 [108] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] print_byte_from_b3: - //SEG511 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@3->print_byte#0] -- register_copy - //SEG512 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy + //SEG507 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@3->print_byte#0] -- register_copy + //SEG508 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy jsr print_byte - //SEG513 [255] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] + //SEG509 [251] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] b4_from_b3: jmp b4 - //SEG514 mul8u_error::@4 + //SEG510 mul8u_error::@4 b4: - //SEG515 [256] call print_str - //SEG516 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] + //SEG511 [252] call print_str + //SEG512 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] print_str_from_b4: - //SEG517 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy - //SEG518 [63] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG513 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy + //SEG514 [63] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b5 - //SEG519 mul8u_error::@5 + //SEG515 mul8u_error::@5 b5: - //SEG520 [257] (word) print_word::w#3 ← (word) mul8u_error::ms#0 - //SEG521 [258] call print_word - //SEG522 [102] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] + //SEG516 [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0 + //SEG517 [254] call print_word + //SEG518 [102] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] print_word_from_b5: - //SEG523 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@5->print_word#0] -- register_copy - //SEG524 [102] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy + //SEG519 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@5->print_word#0] -- register_copy + //SEG520 [102] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy jsr print_word - //SEG525 [259] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] + //SEG521 [255] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] b6_from_b5: jmp b6 - //SEG526 mul8u_error::@6 + //SEG522 mul8u_error::@6 b6: - //SEG527 [260] call print_str - //SEG528 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] + //SEG523 [256] call print_str + //SEG524 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] print_str_from_b6: - //SEG529 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy - //SEG530 [63] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG525 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy + //SEG526 [63] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str jmp b7 - //SEG531 mul8u_error::@7 + //SEG527 mul8u_error::@7 b7: - //SEG532 [261] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 + //SEG528 [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 lda mn sta print_word.w lda mn+1 sta print_word.w+1 - //SEG533 [262] call print_word - //SEG534 [102] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] + //SEG529 [258] call print_word + //SEG530 [102] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] print_word_from_b7: - //SEG535 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@7->print_word#0] -- register_copy - //SEG536 [102] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy + //SEG531 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@7->print_word#0] -- register_copy + //SEG532 [102] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy jsr print_word - //SEG537 [263] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] + //SEG533 [259] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] b8_from_b7: jmp b8 - //SEG538 mul8u_error::@8 + //SEG534 mul8u_error::@8 b8: - //SEG539 [264] call print_str - //SEG540 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] + //SEG535 [260] call print_str + //SEG536 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] print_str_from_b8: - //SEG541 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy - //SEG542 [63] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG537 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy + //SEG538 [63] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str jmp b9 - //SEG543 mul8u_error::@9 + //SEG539 mul8u_error::@9 b9: - //SEG544 [265] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 + //SEG540 [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 lda mf sta print_word.w lda mf+1 sta print_word.w+1 - //SEG545 [266] call print_word - //SEG546 [102] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] + //SEG541 [262] call print_word + //SEG542 [102] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] print_word_from_b9: - //SEG547 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@9->print_word#0] -- register_copy - //SEG548 [102] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy + //SEG543 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@9->print_word#0] -- register_copy + //SEG544 [102] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy jsr print_word - //SEG549 [267] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] + //SEG545 [263] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] b10_from_b9: jmp b10 - //SEG550 mul8u_error::@10 + //SEG546 mul8u_error::@10 b10: - //SEG551 [268] call print_ln - //SEG552 [58] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] + //SEG547 [264] call print_ln + //SEG548 [58] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] print_ln_from_b10: - //SEG553 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8u_error::@10->print_ln#0] -- register_copy - //SEG554 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_error::@10->print_ln#1] -- register_copy + //SEG549 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8u_error::@10->print_ln#0] -- register_copy + //SEG550 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_error::@10->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG555 mul8u_error::@return + //SEG551 mul8u_error::@return breturn: - //SEG556 [269] return + //SEG552 [265] return rts str: .text "multiply mismatch @" } -//SEG557 mulf8u +//SEG553 mulf8u // Fast multiply two unsigned bytes to a word result // mulf8u(byte register(A) a, byte register(X) b) mulf8u: { .label return = $e - //SEG558 [270] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 - //SEG559 [271] call mulf8u_prepare - //SEG560 [190] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] + //SEG554 [266] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 + //SEG555 [267] call mulf8u_prepare + //SEG556 [186] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] mulf8u_prepare_from_mulf8u: - //SEG561 [190] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy + //SEG557 [186] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare jmp b2 - //SEG562 mulf8u::@2 + //SEG558 mulf8u::@2 b2: - //SEG563 [272] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 - //SEG564 [273] call mulf8u_prepared - //SEG565 [185] phi from mulf8u::@2 to mulf8u_prepared [phi:mulf8u::@2->mulf8u_prepared] + //SEG559 [268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 + //SEG560 [269] call mulf8u_prepared + //SEG561 [181] phi from mulf8u::@2 to mulf8u_prepared [phi:mulf8u::@2->mulf8u_prepared] mulf8u_prepared_from_b2: - //SEG566 [185] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@2->mulf8u_prepared#0] -- register_copy + //SEG562 [181] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@2->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG567 [274] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 + //SEG563 [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 jmp b3 - //SEG568 mulf8u::@3 + //SEG564 mulf8u::@3 b3: - //SEG569 [275] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 + //SEG565 [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 jmp breturn - //SEG570 mulf8u::@return + //SEG566 mulf8u::@return breturn: - //SEG571 [276] return + //SEG567 [272] return rts } -//SEG572 muls8u +//SEG568 muls8u // Slow multiplication of unsigned bytes // Calculate an unsigned multiplication by repeated addition // muls8u(byte zeropage(2) a, byte register(X) b) @@ -9280,28 +9208,28 @@ muls8u: { .label return = 8 .label m = 8 .label a = 2 - //SEG573 [277] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 + //SEG569 [273] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 lda a cmp #0 beq b1_from_muls8u - //SEG574 [278] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] + //SEG570 [274] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] b2_from_muls8u: - //SEG575 [278] phi (byte) muls8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#0] -- vbuyy=vbuc1 + //SEG571 [274] phi (byte) muls8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG576 [278] phi (word) muls8u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 + //SEG572 [274] phi (word) muls8u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 lda #<0 sta m lda #>0 sta m+1 jmp b2 - //SEG577 [278] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] + //SEG573 [274] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] b2_from_b2: - //SEG578 [278] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy - //SEG579 [278] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy + //SEG574 [274] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy + //SEG575 [274] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy jmp b2 - //SEG580 muls8u::@2 + //SEG576 muls8u::@2 b2: - //SEG581 [279] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuxx + //SEG577 [275] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuxx txa clc adc m @@ -9309,148 +9237,148 @@ muls8u: { lda #0 adc m+1 sta m+1 - //SEG582 [280] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuyy=_inc_vbuyy + //SEG578 [276] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuyy=_inc_vbuyy iny - //SEG583 [281] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuyy_neq_vbuz1_then_la1 + //SEG579 [277] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuyy_neq_vbuz1_then_la1 cpy a bne b2_from_b2 - //SEG584 [282] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] + //SEG580 [278] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] b1_from_b2: - //SEG585 [282] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy + //SEG581 [278] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy jmp b1 - //SEG586 [282] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] + //SEG582 [278] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] b1_from_muls8u: - //SEG587 [282] phi (word) muls8u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 + //SEG583 [278] phi (word) muls8u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 lda #<0 sta return lda #>0 sta return+1 jmp b1 - //SEG588 muls8u::@1 + //SEG584 muls8u::@1 b1: jmp breturn - //SEG589 muls8u::@return + //SEG585 muls8u::@return breturn: - //SEG590 [283] return + //SEG586 [279] return rts } -//SEG591 mulf_tables_cmp +//SEG587 mulf_tables_cmp // Compare the ASM-based mul tables with the KC-based mul tables // Red screen on failure - green on success mulf_tables_cmp: { .label asm_sqr = 8 .label kc_sqr = 4 - //SEG592 [285] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] + //SEG588 [281] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] b1_from_mulf_tables_cmp: - //SEG593 [285] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[512]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 + //SEG589 [281] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[512]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 lda #mula_sqr1_lo sta asm_sqr+1 - //SEG594 [285] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[512]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 + //SEG590 [281] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[512]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_lo sta kc_sqr+1 jmp b1 - //SEG595 [285] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1] + //SEG591 [281] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1] b1_from_b2: - //SEG596 [285] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#0] -- register_copy - //SEG597 [285] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#1] -- register_copy + //SEG592 [281] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#0] -- register_copy + //SEG593 [281] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#1] -- register_copy jmp b1 - //SEG598 mulf_tables_cmp::@1 + //SEG594 mulf_tables_cmp::@1 b1: - //SEG599 [286] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 + //SEG595 [282] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 ldy #0 lda (kc_sqr),y ldy #0 cmp (asm_sqr),y beq b2 jmp b3 - //SEG600 mulf_tables_cmp::@3 + //SEG596 mulf_tables_cmp::@3 b3: - //SEG601 [287] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG597 [283] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG602 [288] call print_str - //SEG603 [63] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] + //SEG598 [284] call print_str + //SEG599 [63] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] print_str_from_b3: - //SEG604 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 + //SEG600 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG605 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 + //SEG601 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b6 - //SEG606 mulf_tables_cmp::@6 + //SEG602 mulf_tables_cmp::@6 b6: - //SEG607 [289] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 - //SEG608 [290] call print_word - //SEG609 [102] phi from mulf_tables_cmp::@6 to print_word [phi:mulf_tables_cmp::@6->print_word] + //SEG603 [285] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 + //SEG604 [286] call print_word + //SEG605 [102] phi from mulf_tables_cmp::@6 to print_word [phi:mulf_tables_cmp::@6->print_word] print_word_from_b6: - //SEG610 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@6->print_word#0] -- register_copy - //SEG611 [102] phi (word) print_word::w#6 = (word~) print_word::w#11 [phi:mulf_tables_cmp::@6->print_word#1] -- register_copy + //SEG606 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@6->print_word#0] -- register_copy + //SEG607 [102] phi (word) print_word::w#6 = (word~) print_word::w#11 [phi:mulf_tables_cmp::@6->print_word#1] -- register_copy jsr print_word - //SEG612 [291] phi from mulf_tables_cmp::@6 to mulf_tables_cmp::@7 [phi:mulf_tables_cmp::@6->mulf_tables_cmp::@7] + //SEG608 [287] phi from mulf_tables_cmp::@6 to mulf_tables_cmp::@7 [phi:mulf_tables_cmp::@6->mulf_tables_cmp::@7] b7_from_b6: jmp b7 - //SEG613 mulf_tables_cmp::@7 + //SEG609 mulf_tables_cmp::@7 b7: - //SEG614 [292] call print_str - //SEG615 [63] phi from mulf_tables_cmp::@7 to print_str [phi:mulf_tables_cmp::@7->print_str] + //SEG610 [288] call print_str + //SEG611 [63] phi from mulf_tables_cmp::@7 to print_str [phi:mulf_tables_cmp::@7->print_str] print_str_from_b7: - //SEG616 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@7->print_str#0] -- register_copy - //SEG617 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@7->print_str#1] -- pbuz1=pbuc1 + //SEG612 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@7->print_str#0] -- register_copy + //SEG613 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@7->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b8 - //SEG618 mulf_tables_cmp::@8 + //SEG614 mulf_tables_cmp::@8 b8: - //SEG619 [293] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 + //SEG615 [289] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 lda kc_sqr sta print_word.w lda kc_sqr+1 sta print_word.w+1 - //SEG620 [294] call print_word - //SEG621 [102] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word] + //SEG616 [290] call print_word + //SEG617 [102] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word] print_word_from_b8: - //SEG622 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy - //SEG623 [102] phi (word) print_word::w#6 = (word~) print_word::w#12 [phi:mulf_tables_cmp::@8->print_word#1] -- register_copy + //SEG618 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy + //SEG619 [102] phi (word) print_word::w#6 = (word~) print_word::w#12 [phi:mulf_tables_cmp::@8->print_word#1] -- register_copy jsr print_word - //SEG624 [295] phi from mulf_tables_cmp::@8 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return] + //SEG620 [291] phi from mulf_tables_cmp::@8 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return] breturn_from_b8: - //SEG625 [295] phi (byte*) print_line_cursor#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 + //SEG621 [291] phi (byte*) print_line_cursor#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG626 [295] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#1] -- register_copy + //SEG622 [291] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#1] -- register_copy jmp breturn - //SEG627 mulf_tables_cmp::@return + //SEG623 mulf_tables_cmp::@return breturn: - //SEG628 [296] return + //SEG624 [292] return rts - //SEG629 mulf_tables_cmp::@2 + //SEG625 mulf_tables_cmp::@2 b2: - //SEG630 [297] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG626 [293] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 inc asm_sqr bne !+ inc asm_sqr+1 !: - //SEG631 [298] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG627 [294] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 inc kc_sqr bne !+ inc kc_sqr+1 !: - //SEG632 [299] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG628 [295] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 -- pbuz1_lt_pbuc1_then_la1 lda kc_sqr+1 cmp #>mulf_sqr1_lo+$200*4 bcc b1_from_b2 @@ -9459,61 +9387,61 @@ mulf_tables_cmp: { cmp #mulf_tables_cmp::@5] + //SEG629 [296] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@5 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@5] b5_from_b2: jmp b5 - //SEG634 mulf_tables_cmp::@5 + //SEG630 mulf_tables_cmp::@5 b5: - //SEG635 [301] call print_str - //SEG636 [63] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str] + //SEG631 [297] call print_str + //SEG632 [63] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str] print_str_from_b5: - //SEG637 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@5->print_str#0] -- pbuz1=pbuc1 + //SEG633 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@5->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG638 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@5->print_str#1] -- pbuz1=pbuc1 + //SEG634 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@5->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG639 [302] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@10 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@10] + //SEG635 [298] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@10 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@10] b10_from_b5: jmp b10 - //SEG640 mulf_tables_cmp::@10 + //SEG636 mulf_tables_cmp::@10 b10: - //SEG641 [303] call print_ln - //SEG642 [58] phi from mulf_tables_cmp::@10 to print_ln [phi:mulf_tables_cmp::@10->print_ln] + //SEG637 [299] call print_ln + //SEG638 [58] phi from mulf_tables_cmp::@10 to print_ln [phi:mulf_tables_cmp::@10->print_ln] print_ln_from_b10: - //SEG643 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@10->print_ln#0] -- register_copy - //SEG644 [58] phi (byte*) print_line_cursor#45 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@10->print_ln#1] -- pbuz1=pbuc1 + //SEG639 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@10->print_ln#0] -- register_copy + //SEG640 [58] phi (byte*) print_line_cursor#45 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@10->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln - //SEG645 [304] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG641 [300] (byte*~) print_char_cursor#225 ← (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 - //SEG646 [295] phi from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return] + //SEG642 [291] phi from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return] breturn_from_b10: - //SEG647 [295] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#0] -- register_copy - //SEG648 [295] phi (byte*) print_char_cursor#31 = (byte*~) print_char_cursor#225 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#1] -- register_copy + //SEG643 [291] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#0] -- register_copy + //SEG644 [291] phi (byte*) print_char_cursor#31 = (byte*~) print_char_cursor#225 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#1] -- register_copy jmp breturn str: .text "multiply table mismatch at @" str1: .text " / @" str2: .text "multiply tables match!@" } -//SEG649 mulf_init_asm +//SEG645 mulf_init_asm // Initialize the multiplication tables using ASM code from // http://codebase64.org/doku.php?id=base:seriously_fast_multiplication mulf_init_asm: { // Ensure the ASM tables are not detected as unused by the optimizer .label mem = $ff - //SEG650 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } + //SEG646 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } ldx #0 txa .byte $c9 @@ -9552,25 +9480,25 @@ mulf_init_asm: { dey inx bne !- - //SEG651 [306] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG647 [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr1_lo sta mem - //SEG652 [307] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG648 [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr1_hi sta mem - //SEG653 [308] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG649 [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr2_lo sta mem - //SEG654 [309] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG650 [305] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr2_hi sta mem jmp breturn - //SEG655 mulf_init_asm::@return + //SEG651 mulf_init_asm::@return breturn: - //SEG656 [310] return + //SEG652 [306] return rts } -//SEG657 mulf_init +//SEG653 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label sqr1_hi = 6 @@ -9580,81 +9508,81 @@ mulf_init: { .label sqr2_hi = 6 .label sqr2_lo = 4 .label dir = 2 - //SEG658 [312] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG654 [308] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //SEG659 [312] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG655 [308] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG660 [312] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG656 [308] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG661 [312] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG657 [308] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG662 [312] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG658 [308] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #<0 sta sqr lda #>0 sta sqr+1 - //SEG663 [312] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 + //SEG659 [308] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG664 [312] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG660 [308] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //SEG665 [312] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG666 [312] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG667 [312] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG668 [312] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG669 [312] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG661 [308] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG662 [308] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG663 [308] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG664 [308] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG665 [308] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG670 mulf_init::@1 + //SEG666 mulf_init::@1 b1: - //SEG671 [313] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG667 [309] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG672 [314] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG668 [310] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG673 [315] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 + //SEG669 [311] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 cmp #0 bne b2_from_b1 jmp b5 - //SEG674 mulf_init::@5 + //SEG670 mulf_init::@5 b5: - //SEG675 [316] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG671 [312] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG676 [317] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG672 [313] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG677 [318] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG673 [314] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] b2_from_b1: b2_from_b5: - //SEG678 [318] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy - //SEG679 [318] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy + //SEG674 [314] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy + //SEG675 [314] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy jmp b2 - //SEG680 mulf_init::@2 + //SEG676 mulf_init::@2 b2: - //SEG681 [319] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG677 [315] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG682 [320] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa + //SEG678 [316] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG683 [321] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG679 [317] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG684 [322] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa + //SEG680 [318] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_hi),y - //SEG685 [323] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG681 [319] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG686 [324] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG682 [320] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -9662,80 +9590,80 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG687 [325] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG683 [321] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG688 [326] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG684 [322] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo cmp #mulf_init::@3] + //SEG685 [323] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] b3_from_b2: - //SEG690 [327] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 + //SEG686 [323] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG691 [327] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 + //SEG687 [323] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG692 [327] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 + //SEG688 [323] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG693 [327] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 + //SEG689 [323] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 ldx #-1 jmp b3 - //SEG694 [327] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG690 [323] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] b3_from_b4: - //SEG695 [327] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy - //SEG696 [327] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy - //SEG697 [327] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy - //SEG698 [327] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG691 [323] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG692 [323] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG693 [323] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG694 [323] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy jmp b3 - //SEG699 mulf_init::@3 + //SEG695 mulf_init::@3 b3: - //SEG700 [328] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG696 [324] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG701 [329] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG697 [325] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_hi,x ldy #0 sta (sqr2_hi),y - //SEG702 [330] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG698 [326] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG703 [331] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG699 [327] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - //SEG704 [332] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 + //SEG700 [328] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 cpx #0 bne b12_from_b3 - //SEG705 [333] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG701 [329] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] b4_from_b3: - //SEG706 [333] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG702 [329] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b4 - //SEG707 mulf_init::@4 + //SEG703 mulf_init::@4 b4: - //SEG708 [334] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG704 [330] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG709 [335] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 + //SEG705 [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b3_from_b4 @@ -9743,58 +9671,58 @@ mulf_init: { cmp #mulf_init::@12] + //SEG711 [335] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] b12_from_b3: jmp b12 - //SEG716 mulf_init::@12 + //SEG712 mulf_init::@12 b12: - //SEG717 [333] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG713 [329] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] b4_from_b12: - //SEG718 [333] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG714 [329] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy jmp b4 } -//SEG719 print_cls +//SEG715 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 4 - //SEG720 [341] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG716 [337] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG721 [341] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG717 [337] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG722 [341] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG718 [337] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG723 [341] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG719 [337] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG724 print_cls::@1 + //SEG720 print_cls::@1 b1: - //SEG725 [342] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG721 [338] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG726 [343] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG722 [339] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG727 [344] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG723 [340] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -9802,9 +9730,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG728 print_cls::@return + //SEG724 print_cls::@return breturn: - //SEG729 [345] return + //SEG725 [341] return rts } print_hextab: .text "0123456789abcdef" @@ -9970,11 +9898,7 @@ Removing instruction jmp b1 Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination Removing instruction ldy #0 -Removing instruction lda m+1 -Removing instruction lda m+1 Removing instruction lda #>0 -Removing instruction lda m+1 -Removing instruction lda m+1 Removing instruction ldx memB Removing instruction lda memA Removing instruction lda #<0 @@ -10310,11 +10234,9 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@return (signed word()) mul8s((signed byte) mul8s::a , (signed byte) mul8s::b) -(byte~) mul8s::$11 reg byte a 20.0 (byte~) mul8s::$12 reg byte a 4.0 (byte~) mul8s::$16 reg byte a 4.0 (byte~) mul8s::$17 reg byte a 4.0 -(byte~) mul8s::$5 reg byte a 20.0 (byte~) mul8s::$6 reg byte a 4.0 (label) mul8s::@1 (label) mul8s::@2 @@ -10323,15 +10245,15 @@ FINAL SYMBOL TABLE (label) mul8s::@6 (label) mul8s::@return (signed byte) mul8s::a -(signed byte) mul8s::a#0 a zp ZP_BYTE:2 6.4375 +(signed byte) mul8s::a#0 a zp ZP_BYTE:2 7.357142857142858 (signed byte) mul8s::b -(signed byte) mul8s::b#0 reg byte y 8.583333333333332 +(signed byte) mul8s::b#0 reg byte y 9.363636363636363 (word) mul8s::m (word) mul8s::m#0 m zp ZP_WORD:12 2.0 (word) mul8s::m#1 m zp ZP_WORD:12 4.0 (word) mul8s::m#2 m zp ZP_WORD:12 4.0 (word) mul8s::m#4 m zp ZP_WORD:12 1.3333333333333333 -(word) mul8s::m#5 m zp ZP_WORD:12 2.4 +(word) mul8s::m#5 m zp ZP_WORD:12 2.5 (signed word) mul8s::return (signed word) mul8s::return#2 return zp ZP_WORD:12 202.0 (void()) mul8s_compare() @@ -10495,11 +10417,9 @@ FINAL SYMBOL TABLE (signed word) mulf8s::return#0 return zp ZP_WORD:14 34.33333333333333 (signed word) mulf8s::return#2 return zp ZP_WORD:14 202.0 (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -(byte~) mulf8s_prepared::$10 reg byte a 20.0 (byte~) mulf8s_prepared::$11 reg byte a 4.0 (byte~) mulf8s_prepared::$15 reg byte a 4.0 (byte~) mulf8s_prepared::$16 reg byte a 4.0 -(byte~) mulf8s_prepared::$4 reg byte a 20.0 (byte~) mulf8s_prepared::$5 reg byte a 4.0 (label) mulf8s_prepared::@1 (label) mulf8s_prepared::@2 @@ -10508,13 +10428,13 @@ FINAL SYMBOL TABLE (label) mulf8s_prepared::@6 (label) mulf8s_prepared::@return (signed byte) mulf8s_prepared::b -(signed byte) mulf8s_prepared::b#0 b zp ZP_BYTE:3 0.36363636363636365 +(signed byte) mulf8s_prepared::b#0 b zp ZP_BYTE:3 0.4 (word) mulf8s_prepared::m (word) mulf8s_prepared::m#0 m zp ZP_WORD:14 2.0 (word) mulf8s_prepared::m#1 m zp ZP_WORD:14 4.0 (word) mulf8s_prepared::m#2 m zp ZP_WORD:14 4.0 (word) mulf8s_prepared::m#4 m zp ZP_WORD:14 1.3333333333333333 -(word) mulf8s_prepared::m#5 m zp ZP_WORD:14 2.4 +(word) mulf8s_prepared::m#5 m zp ZP_WORD:14 2.5 (signed byte*) mulf8s_prepared::memA (const signed byte*) mulf8s_prepared::memA#0 memA = ((signed byte*))(byte/word/signed word/dword/signed dword) 253 (signed word) mulf8s_prepared::return @@ -10792,17 +10712,13 @@ reg byte y [ mul8s::b#0 ] reg byte x [ mul8s_error::a#0 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -reg byte a [ mul8s::$5 ] reg byte a [ mul8s::$6 ] reg byte a [ mul8s::$16 ] -reg byte a [ mul8s::$11 ] reg byte a [ mul8s::$12 ] reg byte a [ mul8s::$17 ] reg byte a [ mul8u::$1 ] -reg byte a [ mulf8s_prepared::$4 ] reg byte a [ mulf8s_prepared::$5 ] reg byte a [ mulf8s_prepared::$15 ] -reg byte a [ mulf8s_prepared::$10 ] reg byte a [ mulf8s_prepared::$11 ] reg byte a [ mulf8s_prepared::$16 ] reg byte x [ muls8u::b#0 ] @@ -10839,12 +10755,12 @@ main: { lda #5 sta BGCOL //SEG11 [5] call print_cls - //SEG12 [340] phi from main to print_cls [phi:main->print_cls] + //SEG12 [336] 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 mulf_init - //SEG16 [311] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG16 [307] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] jsr mulf_init //SEG17 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] //SEG18 main::@2 @@ -10853,12 +10769,12 @@ main: { //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] //SEG21 main::@3 //SEG22 [11] call mulf_tables_cmp - //SEG23 [284] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp] + //SEG23 [280] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp] jsr mulf_tables_cmp //SEG24 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] //SEG25 main::@4 //SEG26 [13] call mul8u_compare - //SEG27 [206] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare] + //SEG27 [202] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare] jsr mul8u_compare //SEG28 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] //SEG29 main::@5 @@ -10906,7 +10822,7 @@ mul8s_compare: { //SEG52 [26] (signed byte) mulf8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsxx=vbsz1 ldx b //SEG53 [27] call mulf8s - //SEG54 [160] phi from mul8s_compare::@12 to mulf8s [phi:mul8s_compare::@12->mulf8s] + //SEG54 [158] phi from mul8s_compare::@12 to mulf8s [phi:mul8s_compare::@12->mulf8s] jsr mulf8s //SEG55 [28] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 //SEG56 mul8s_compare::@13 @@ -11372,9 +11288,9 @@ mul8s: { //SEG276 [132] (byte~) mul8u::a#8 ← (byte)(signed byte) mul8s::a#0 -- vbuxx=vbuz1 ldx a //SEG277 [133] call mul8u - //SEG278 [149] phi from mul8s to mul8u [phi:mul8s->mul8u] - //SEG279 [149] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8s->mul8u#0] -- register_copy - //SEG280 [149] phi (byte) mul8u::b#2 = (byte~) mul8u::b#3 [phi:mul8s->mul8u#1] -- register_copy + //SEG278 [147] phi from mul8s to mul8u [phi:mul8s->mul8u] + //SEG279 [147] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8s->mul8u#0] -- register_copy + //SEG280 [147] phi (byte) mul8u::b#2 = (byte~) mul8u::b#3 [phi:mul8s->mul8u#1] -- register_copy jsr mul8u //SEG281 [134] (word) mul8u::return#2 ← (word) mul8u::res#2 //SEG282 mul8s::@6 @@ -11384,74 +11300,72 @@ mul8s: { cmp #0 bpl b1 //SEG285 mul8s::@3 - //SEG286 [137] (byte~) mul8s::$5 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 + //SEG286 [137] (byte~) mul8s::$6 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG287 [138] (byte~) mul8s::$6 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 - //SEG288 [139] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuaa_minus_vbuyy + //SEG287 [138] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuaa_minus_vbuyy sty $ff sec sbc $ff - //SEG289 [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuaa + //SEG288 [139] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG290 [141] phi from mul8s::@3 mul8s::@6 to mul8s::@1 [phi:mul8s::@3/mul8s::@6->mul8s::@1] - //SEG291 [141] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@6->mul8s::@1#0] -- register_copy - //SEG292 mul8s::@1 + //SEG289 [140] phi from mul8s::@3 mul8s::@6 to mul8s::@1 [phi:mul8s::@3/mul8s::@6->mul8s::@1] + //SEG290 [140] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@6->mul8s::@1#0] -- register_copy + //SEG291 mul8s::@1 b1: - //SEG293 [142] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 -- vbsyy_ge_0_then_la1 + //SEG292 [141] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 -- vbsyy_ge_0_then_la1 cpy #0 bpl b2 - //SEG294 mul8s::@4 - //SEG295 [143] (byte~) mul8s::$11 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 + //SEG293 mul8s::@4 + //SEG294 [142] (byte~) mul8s::$12 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG296 [144] (byte~) mul8s::$12 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 - //SEG297 [145] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 -- vbuaa=vbuaa_minus_vbuz1 + //SEG295 [143] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 -- vbuaa=vbuaa_minus_vbuz1 sec sbc a - //SEG298 [146] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuaa + //SEG296 [144] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG299 [147] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] - //SEG300 [147] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy - //SEG301 mul8s::@2 + //SEG297 [145] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] + //SEG298 [145] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy + //SEG299 mul8s::@2 b2: - //SEG302 mul8s::@return - //SEG303 [148] return + //SEG300 mul8s::@return + //SEG301 [146] return rts } -//SEG304 mul8u +//SEG302 mul8u // Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word // mul8u(byte register(X) a, byte register(A) b) mul8u: { .label mb = 6 .label res = $c .label return = $c - //SEG305 [150] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa + //SEG303 [148] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa sta mb lda #0 sta mb+1 - //SEG306 [151] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] - //SEG307 [151] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG308 [151] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG304 [149] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG305 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG306 [149] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 sta res sta res+1 - //SEG309 [151] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy - //SEG310 mul8u::@1 + //SEG307 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG308 mul8u::@1 b1: - //SEG311 [152] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG309 [150] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 - //SEG312 mul8u::@return - //SEG313 [153] return + //SEG310 mul8u::@return + //SEG311 [151] return rts - //SEG314 mul8u::@2 + //SEG312 mul8u::@2 b2: - //SEG315 [154] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG313 [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG316 [155] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 + //SEG314 [153] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 - //SEG317 mul8u::@7 - //SEG318 [156] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG315 mul8u::@7 + //SEG316 [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -11459,47 +11373,47 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG319 [157] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] - //SEG320 [157] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy - //SEG321 mul8u::@4 + //SEG317 [155] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG318 [155] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG319 mul8u::@4 b4: - //SEG322 [158] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 + //SEG320 [156] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG323 [159] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG321 [157] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG324 [151] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] - //SEG325 [151] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG326 [151] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG327 [151] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG322 [149] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG323 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG324 [149] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG325 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG328 mulf8s +//SEG326 mulf8s // Fast multiply two signed bytes to a word result // mulf8s(signed byte register(A) a, signed byte register(X) b) mulf8s: { .label return = $e - //SEG329 mulf8s::mulf8s_prepare1 - //SEG330 [161] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 - //SEG331 [162] call mulf8u_prepare - //SEG332 [190] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] - //SEG333 [190] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy + //SEG327 mulf8s::mulf8s_prepare1 + //SEG328 [159] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 + //SEG329 [160] call mulf8u_prepare + //SEG330 [186] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] + //SEG331 [186] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare - //SEG334 mulf8s::@2 - //SEG335 [163] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsxx + //SEG332 mulf8s::@2 + //SEG333 [161] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsxx stx mulf8s_prepared.b - //SEG336 [164] call mulf8s_prepared + //SEG334 [162] call mulf8s_prepared jsr mulf8s_prepared - //SEG337 [165] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 - //SEG338 mulf8s::@4 - //SEG339 [166] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 - //SEG340 mulf8s::@return - //SEG341 [167] return + //SEG335 [163] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 + //SEG336 mulf8s::@4 + //SEG337 [164] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 + //SEG338 mulf8s::@return + //SEG339 [165] return rts } -//SEG342 mulf8s_prepared +//SEG340 mulf8s_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8s_prepare(byte a) // mulf8s_prepared(signed byte zeropage(3) b) @@ -11508,54 +11422,52 @@ mulf8s_prepared: { .label m = $e .label b = 3 .label return = $e - //SEG343 [168] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuxx=vbuz1 + //SEG341 [166] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuxx=vbuz1 ldx b - //SEG344 [169] call mulf8u_prepared - //SEG345 [185] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] - //SEG346 [185] phi (byte) mulf8u_prepared::b#2 = (byte~) mulf8u_prepared::b#3 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy + //SEG342 [167] call mulf8u_prepared + //SEG343 [181] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] + //SEG344 [181] phi (byte) mulf8u_prepared::b#2 = (byte~) mulf8u_prepared::b#3 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG347 [170] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 - //SEG348 mulf8s_prepared::@6 - //SEG349 [171] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 - //SEG350 [172] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 + //SEG345 [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 + //SEG346 mulf8s_prepared::@6 + //SEG347 [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 + //SEG348 [170] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 lda memA cmp #0 bpl b1 - //SEG351 mulf8s_prepared::@3 - //SEG352 [173] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 + //SEG349 mulf8s_prepared::@3 + //SEG350 [171] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG353 [174] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 - //SEG354 [175] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuaa_minus_vbuz1 + //SEG351 [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuaa_minus_vbuz1 sec sbc b - //SEG355 [176] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa + //SEG352 [173] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG356 [177] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] - //SEG357 [177] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy - //SEG358 mulf8s_prepared::@1 + //SEG353 [174] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] + //SEG354 [174] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy + //SEG355 mulf8s_prepared::@1 b1: - //SEG359 [178] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 + //SEG356 [175] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 lda b cmp #0 bpl b2 - //SEG360 mulf8s_prepared::@4 - //SEG361 [179] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 + //SEG357 mulf8s_prepared::@4 + //SEG358 [176] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG362 [180] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 - //SEG363 [181] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuaa=vbuaa_minus__deref_pbuc1 + //SEG359 [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuaa=vbuaa_minus__deref_pbuc1 sec sbc memA - //SEG364 [182] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa + //SEG360 [178] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG365 [183] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] - //SEG366 [183] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy - //SEG367 mulf8s_prepared::@2 + //SEG361 [179] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] + //SEG362 [179] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy + //SEG363 mulf8s_prepared::@2 b2: - //SEG368 mulf8s_prepared::@return - //SEG369 [184] return + //SEG364 mulf8s_prepared::@return + //SEG365 [180] return rts } -//SEG370 mulf8u_prepared +//SEG366 mulf8u_prepared // Calculate fast multiply with a prepared unsigned byte to a word result // The prepared number is set by calling mulf8u_prepare(byte a) // mulf8u_prepared(byte register(X) b) @@ -11563,9 +11475,9 @@ mulf8u_prepared: { .label resL = $fe .label memB = $ff .label return = $e - //SEG371 [186] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuxx + //SEG367 [182] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuxx stx memB - //SEG372 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } + //SEG368 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } sec sm1: lda mulf_sqr1_lo,x @@ -11577,33 +11489,33 @@ mulf8u_prepared: { sm4: sbc mulf_sqr2_hi,x sta memB - //SEG373 [188] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG369 [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda resL sta return lda memB sta return+1 - //SEG374 mulf8u_prepared::@return - //SEG375 [189] return + //SEG370 mulf8u_prepared::@return + //SEG371 [185] return rts } -//SEG376 mulf8u_prepare +//SEG372 mulf8u_prepare // Prepare for fast multiply with an unsigned byte to a word result // mulf8u_prepare(byte register(A) a) mulf8u_prepare: { .label memA = $fd - //SEG377 [191] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa + //SEG373 [187] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa sta memA - //SEG378 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } + //SEG374 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } sta mulf8u_prepared.sm1+1 sta mulf8u_prepared.sm3+1 eor #$ff sta mulf8u_prepared.sm2+1 sta mulf8u_prepared.sm4+1 - //SEG379 mulf8u_prepare::@return - //SEG380 [193] return + //SEG375 mulf8u_prepare::@return + //SEG376 [189] return rts } -//SEG381 muls8s +//SEG377 muls8s // Slow multiplication of signed bytes // Perform a signed multiplication by repeated addition/subtraction // muls8s(signed byte zeropage(2) a, signed byte register(X) b) @@ -11611,26 +11523,26 @@ muls8s: { .label m = 8 .label return = 8 .label a = 2 - //SEG382 [194] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 -- vbsz1_lt_0_then_la1 + //SEG378 [190] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 -- vbsz1_lt_0_then_la1 lda a bmi b6 - //SEG383 muls8s::@6 - //SEG384 [195] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 -- vbsz1_le_0_then_la1 + //SEG379 muls8s::@6 + //SEG380 [191] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 -- vbsz1_le_0_then_la1 cmp #1 bmi b2 - //SEG385 [196] phi from muls8s::@6 to muls8s::@3 [phi:muls8s::@6->muls8s::@3] - //SEG386 [196] phi (signed byte) muls8s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#0] -- vbsyy=vbuc1 + //SEG381 [192] phi from muls8s::@6 to muls8s::@3 [phi:muls8s::@6->muls8s::@3] + //SEG382 [192] phi (signed byte) muls8s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#0] -- vbsyy=vbuc1 lda #0 tay - //SEG387 [196] phi (signed word) muls8s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#1] -- vwsz1=vbuc1 + //SEG383 [192] phi (signed word) muls8s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#1] -- vwsz1=vbuc1 sta m sta m+1 - //SEG388 [196] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] - //SEG389 [196] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy - //SEG390 [196] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy - //SEG391 muls8s::@3 + //SEG384 [192] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] + //SEG385 [192] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy + //SEG386 [192] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy + //SEG387 muls8s::@3 b3: - //SEG392 [197] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsxx + //SEG388 [193] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsxx txa sta $fe ora #$7f @@ -11645,39 +11557,39 @@ muls8s: { lda m+1 adc $ff sta m+1 - //SEG393 [198] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsyy=_inc_vbsyy + //SEG389 [194] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsyy=_inc_vbsyy iny - //SEG394 [199] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsyy_neq_vbsz1_then_la1 + //SEG390 [195] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsyy_neq_vbsz1_then_la1 cpy a bne b3 - //SEG395 [200] phi from muls8s::@3 muls8s::@5 to muls8s::@4 [phi:muls8s::@3/muls8s::@5->muls8s::@4] - //SEG396 [200] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@5->muls8s::@4#0] -- register_copy + //SEG391 [196] phi from muls8s::@3 muls8s::@5 to muls8s::@4 [phi:muls8s::@3/muls8s::@5->muls8s::@4] + //SEG392 [196] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@5->muls8s::@4#0] -- register_copy jmp b4 - //SEG397 [200] phi from muls8s::@6 to muls8s::@4 [phi:muls8s::@6->muls8s::@4] + //SEG393 [196] phi from muls8s::@6 to muls8s::@4 [phi:muls8s::@6->muls8s::@4] b2: - //SEG398 [200] phi (signed word) muls8s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@4#0] -- vwsz1=vbuc1 + //SEG394 [196] phi (signed word) muls8s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@4#0] -- vwsz1=vbuc1 lda #<0 sta return sta return+1 - //SEG399 muls8s::@4 + //SEG395 muls8s::@4 b4: - //SEG400 muls8s::@return - //SEG401 [201] return + //SEG396 muls8s::@return + //SEG397 [197] return rts - //SEG402 [202] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5] + //SEG398 [198] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5] b6: - //SEG403 [202] phi (signed byte) muls8s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#0] -- vbsyy=vbuc1 + //SEG399 [198] phi (signed byte) muls8s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#0] -- vbsyy=vbuc1 lda #0 tay - //SEG404 [202] phi (signed word) muls8s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#1] -- vwsz1=vbuc1 + //SEG400 [198] phi (signed word) muls8s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#1] -- vwsz1=vbuc1 sta m sta m+1 - //SEG405 [202] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5] - //SEG406 [202] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@5->muls8s::@5#0] -- register_copy - //SEG407 [202] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@5->muls8s::@5#1] -- register_copy - //SEG408 muls8s::@5 + //SEG401 [198] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5] + //SEG402 [198] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@5->muls8s::@5#0] -- register_copy + //SEG403 [198] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@5->muls8s::@5#1] -- register_copy + //SEG404 muls8s::@5 b5: - //SEG409 [203] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsxx + //SEG405 [199] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsxx txa sta $fe ora #$7f @@ -11692,14 +11604,14 @@ muls8s: { lda m+1 sbc $ff sta m+1 - //SEG410 [204] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsyy=_dec_vbsyy + //SEG406 [200] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsyy=_dec_vbsyy dey - //SEG411 [205] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 -- vbsyy_neq_vbsz1_then_la1 + //SEG407 [201] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 -- vbsyy_neq_vbsz1_then_la1 cpy a bne b5 jmp b4 } -//SEG412 mul8u_compare +//SEG408 mul8u_compare // Perform all possible byte multiplications (slow and fast) and compare the results mul8u_compare: { .label ms = 8 @@ -11707,52 +11619,52 @@ mul8u_compare: { .label mn = $c .label b = 3 .label a = 2 - //SEG413 [207] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] - //SEG414 [207] phi (byte) mul8u_compare::a#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 + //SEG409 [203] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] + //SEG410 [203] phi (byte) mul8u_compare::a#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta a - //SEG415 [207] phi from mul8u_compare::@10 to mul8u_compare::@1 [phi:mul8u_compare::@10->mul8u_compare::@1] - //SEG416 [207] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@10->mul8u_compare::@1#0] -- register_copy - //SEG417 mul8u_compare::@1 + //SEG411 [203] phi from mul8u_compare::@10 to mul8u_compare::@1 [phi:mul8u_compare::@10->mul8u_compare::@1] + //SEG412 [203] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@10->mul8u_compare::@1#0] -- register_copy + //SEG413 mul8u_compare::@1 b1: - //SEG418 [208] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] - //SEG419 [208] phi (byte) mul8u_compare::b#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 + //SEG414 [204] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] + //SEG415 [204] phi (byte) mul8u_compare::b#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 lda #0 sta b - //SEG420 [208] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] - //SEG421 [208] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy - //SEG422 mul8u_compare::@2 + //SEG416 [204] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] + //SEG417 [204] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy + //SEG418 mul8u_compare::@2 b2: - //SEG423 [209] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 - //SEG424 [210] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 + //SEG419 [205] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 + //SEG420 [206] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 ldx b - //SEG425 [211] call muls8u + //SEG421 [207] call muls8u jsr muls8u - //SEG426 [212] (word) muls8u::return#2 ← (word) muls8u::return#0 - //SEG427 mul8u_compare::@12 - //SEG428 [213] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 - //SEG429 [214] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuaa=vbuz1 + //SEG422 [208] (word) muls8u::return#2 ← (word) muls8u::return#0 + //SEG423 mul8u_compare::@12 + //SEG424 [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 + //SEG425 [210] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuaa=vbuz1 lda a - //SEG430 [215] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 + //SEG426 [211] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 ldx b - //SEG431 [216] call mulf8u + //SEG427 [212] call mulf8u jsr mulf8u - //SEG432 [217] (word) mulf8u::return#2 ← (word) mulf8u::return#0 - //SEG433 mul8u_compare::@13 - //SEG434 [218] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 - //SEG435 [219] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 + //SEG428 [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0 + //SEG429 mul8u_compare::@13 + //SEG430 [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 + //SEG431 [215] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 ldx a - //SEG436 [220] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuaa=vbuz1 + //SEG432 [216] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuaa=vbuz1 lda b - //SEG437 [221] call mul8u - //SEG438 [149] phi from mul8u_compare::@13 to mul8u [phi:mul8u_compare::@13->mul8u] - //SEG439 [149] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@13->mul8u#0] -- register_copy - //SEG440 [149] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mul8u_compare::@13->mul8u#1] -- register_copy + //SEG433 [217] call mul8u + //SEG434 [147] phi from mul8u_compare::@13 to mul8u [phi:mul8u_compare::@13->mul8u] + //SEG435 [147] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@13->mul8u#0] -- register_copy + //SEG436 [147] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mul8u_compare::@13->mul8u#1] -- register_copy jsr mul8u - //SEG441 [222] (word) mul8u::return#3 ← (word) mul8u::res#2 - //SEG442 mul8u_compare::@14 - //SEG443 [223] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 - //SEG444 [224] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 + //SEG437 [218] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG438 mul8u_compare::@14 + //SEG439 [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 + //SEG440 [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 lda ms cmp mf bne !+ @@ -11760,19 +11672,19 @@ mul8u_compare: { cmp mf+1 beq b6 !: - //SEG445 [225] phi from mul8u_compare::@14 to mul8u_compare::@6 [phi:mul8u_compare::@14->mul8u_compare::@6] - //SEG446 mul8u_compare::@6 - //SEG447 [226] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] - //SEG448 [226] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuxx=vbuc1 + //SEG441 [221] phi from mul8u_compare::@14 to mul8u_compare::@6 [phi:mul8u_compare::@14->mul8u_compare::@6] + //SEG442 mul8u_compare::@6 + //SEG443 [222] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] + //SEG444 [222] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG449 [226] phi from mul8u_compare::@14 to mul8u_compare::@3 [phi:mul8u_compare::@14->mul8u_compare::@3] + //SEG445 [222] phi from mul8u_compare::@14 to mul8u_compare::@3 [phi:mul8u_compare::@14->mul8u_compare::@3] b6: - //SEG450 [226] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8u_compare::@14->mul8u_compare::@3#0] -- vbuxx=vbuc1 + //SEG446 [222] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8u_compare::@14->mul8u_compare::@3#0] -- vbuxx=vbuc1 ldx #1 - //SEG451 mul8u_compare::@3 + //SEG447 mul8u_compare::@3 b3: - //SEG452 [227] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 -- vwuz1_eq_vwuz2_then_la1 + //SEG448 [223] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 -- vwuz1_eq_vwuz2_then_la1 lda ms cmp mn bne !+ @@ -11780,211 +11692,211 @@ mul8u_compare: { cmp mn+1 beq b4 !: - //SEG453 [228] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] - //SEG454 [228] phi (byte) mul8u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuxx=vbuc1 + //SEG449 [224] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] + //SEG450 [224] phi (byte) mul8u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuxx=vbuc1 ldx #0 - //SEG455 mul8u_compare::@4 + //SEG451 mul8u_compare::@4 b4: - //SEG456 [229] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 -- vbuxx_neq_0_then_la1 + //SEG452 [225] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 -- vbuxx_neq_0_then_la1 cpx #0 bne b5 - //SEG457 mul8u_compare::@8 - //SEG458 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG453 mul8u_compare::@8 + //SEG454 [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG459 [231] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 + //SEG455 [227] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 ldx a - //SEG460 [232] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 - //SEG461 [233] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 - //SEG462 [234] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 - //SEG463 [235] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 - //SEG464 [236] call mul8u_error - //SEG465 [247] phi from mul8u_compare::@8 to mul8u_error [phi:mul8u_compare::@8->mul8u_error] + //SEG456 [228] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 + //SEG457 [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 + //SEG458 [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 + //SEG459 [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 + //SEG460 [232] call mul8u_error + //SEG461 [243] phi from mul8u_compare::@8 to mul8u_error [phi:mul8u_compare::@8->mul8u_error] jsr mul8u_error - //SEG466 mul8u_compare::@return + //SEG462 mul8u_compare::@return breturn: - //SEG467 [237] return + //SEG463 [233] return rts - //SEG468 mul8u_compare::@5 + //SEG464 mul8u_compare::@5 b5: - //SEG469 [238] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 + //SEG465 [234] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 inc b - //SEG470 [239] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 + //SEG466 [235] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 lda b cmp #0 bne b2 - //SEG471 mul8u_compare::@10 - //SEG472 [240] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 + //SEG467 mul8u_compare::@10 + //SEG468 [236] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 inc a - //SEG473 [241] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 + //SEG469 [237] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 lda a cmp #0 bne b1 - //SEG474 [242] phi from mul8u_compare::@10 to mul8u_compare::@11 [phi:mul8u_compare::@10->mul8u_compare::@11] - //SEG475 mul8u_compare::@11 - //SEG476 [243] call print_str - //SEG477 [63] phi from mul8u_compare::@11 to print_str [phi:mul8u_compare::@11->print_str] - //SEG478 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_compare::@11->print_str#0] -- register_copy - //SEG479 [63] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@11->print_str#1] -- pbuz1=pbuc1 + //SEG470 [238] phi from mul8u_compare::@10 to mul8u_compare::@11 [phi:mul8u_compare::@10->mul8u_compare::@11] + //SEG471 mul8u_compare::@11 + //SEG472 [239] call print_str + //SEG473 [63] phi from mul8u_compare::@11 to print_str [phi:mul8u_compare::@11->print_str] + //SEG474 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_compare::@11->print_str#0] -- register_copy + //SEG475 [63] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@11->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG480 [244] phi from mul8u_compare::@11 to mul8u_compare::@16 [phi:mul8u_compare::@11->mul8u_compare::@16] - //SEG481 mul8u_compare::@16 - //SEG482 [245] call print_ln - //SEG483 [58] phi from mul8u_compare::@16 to print_ln [phi:mul8u_compare::@16->print_ln] - //SEG484 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8u_compare::@16->print_ln#0] -- register_copy - //SEG485 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_compare::@16->print_ln#1] -- register_copy + //SEG476 [240] phi from mul8u_compare::@11 to mul8u_compare::@16 [phi:mul8u_compare::@11->mul8u_compare::@16] + //SEG477 mul8u_compare::@16 + //SEG478 [241] call print_ln + //SEG479 [58] phi from mul8u_compare::@16 to print_ln [phi:mul8u_compare::@16->print_ln] + //SEG480 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8u_compare::@16->print_ln#0] -- register_copy + //SEG481 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_compare::@16->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG486 [246] phi from mul8u_compare::@3 to mul8u_compare::@20 [phi:mul8u_compare::@3->mul8u_compare::@20] - //SEG487 mul8u_compare::@20 - //SEG488 [228] phi from mul8u_compare::@20 to mul8u_compare::@4 [phi:mul8u_compare::@20->mul8u_compare::@4] - //SEG489 [228] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@20->mul8u_compare::@4#0] -- register_copy + //SEG482 [242] phi from mul8u_compare::@3 to mul8u_compare::@20 [phi:mul8u_compare::@3->mul8u_compare::@20] + //SEG483 mul8u_compare::@20 + //SEG484 [224] phi from mul8u_compare::@20 to mul8u_compare::@4 [phi:mul8u_compare::@20->mul8u_compare::@4] + //SEG485 [224] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@20->mul8u_compare::@4#0] -- register_copy str: .text "multiply results match!@" } -//SEG490 mul8u_error +//SEG486 mul8u_error // mul8u_error(byte register(X) a, byte zeropage(3) b, word zeropage(8) ms, word zeropage($c) mn, word zeropage($e) mf) mul8u_error: { .label b = 3 .label ms = 8 .label mn = $c .label mf = $e - //SEG491 [248] call print_str - //SEG492 [63] phi from mul8u_error to print_str [phi:mul8u_error->print_str] - //SEG493 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_error->print_str#0] -- register_copy - //SEG494 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 + //SEG487 [244] call print_str + //SEG488 [63] phi from mul8u_error to print_str [phi:mul8u_error->print_str] + //SEG489 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_error->print_str#0] -- register_copy + //SEG490 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG495 mul8u_error::@1 - //SEG496 [249] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 - //SEG497 [250] call print_byte - //SEG498 [108] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] - //SEG499 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@1->print_byte#0] -- register_copy - //SEG500 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy + //SEG491 mul8u_error::@1 + //SEG492 [245] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 + //SEG493 [246] call print_byte + //SEG494 [108] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] + //SEG495 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@1->print_byte#0] -- register_copy + //SEG496 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy jsr print_byte - //SEG501 [251] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] - //SEG502 mul8u_error::@2 - //SEG503 [252] call print_str - //SEG504 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] - //SEG505 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy - //SEG506 [63] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG497 [247] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] + //SEG498 mul8u_error::@2 + //SEG499 [248] call print_str + //SEG500 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] + //SEG501 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy + //SEG502 [63] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG507 mul8u_error::@3 - //SEG508 [253] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuxx=vbuz1 + //SEG503 mul8u_error::@3 + //SEG504 [249] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuxx=vbuz1 ldx b - //SEG509 [254] call print_byte - //SEG510 [108] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] - //SEG511 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@3->print_byte#0] -- register_copy - //SEG512 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy + //SEG505 [250] call print_byte + //SEG506 [108] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] + //SEG507 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@3->print_byte#0] -- register_copy + //SEG508 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy jsr print_byte - //SEG513 [255] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] - //SEG514 mul8u_error::@4 - //SEG515 [256] call print_str - //SEG516 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] - //SEG517 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy - //SEG518 [63] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG509 [251] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] + //SEG510 mul8u_error::@4 + //SEG511 [252] call print_str + //SEG512 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] + //SEG513 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy + //SEG514 [63] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG519 mul8u_error::@5 - //SEG520 [257] (word) print_word::w#3 ← (word) mul8u_error::ms#0 - //SEG521 [258] call print_word - //SEG522 [102] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] - //SEG523 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@5->print_word#0] -- register_copy - //SEG524 [102] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy + //SEG515 mul8u_error::@5 + //SEG516 [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0 + //SEG517 [254] call print_word + //SEG518 [102] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] + //SEG519 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@5->print_word#0] -- register_copy + //SEG520 [102] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy jsr print_word - //SEG525 [259] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] - //SEG526 mul8u_error::@6 - //SEG527 [260] call print_str - //SEG528 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] - //SEG529 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy - //SEG530 [63] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG521 [255] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] + //SEG522 mul8u_error::@6 + //SEG523 [256] call print_str + //SEG524 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] + //SEG525 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy + //SEG526 [63] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str - //SEG531 mul8u_error::@7 - //SEG532 [261] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 + //SEG527 mul8u_error::@7 + //SEG528 [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 lda mn sta print_word.w lda mn+1 sta print_word.w+1 - //SEG533 [262] call print_word - //SEG534 [102] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] - //SEG535 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@7->print_word#0] -- register_copy - //SEG536 [102] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy + //SEG529 [258] call print_word + //SEG530 [102] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] + //SEG531 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@7->print_word#0] -- register_copy + //SEG532 [102] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy jsr print_word - //SEG537 [263] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] - //SEG538 mul8u_error::@8 - //SEG539 [264] call print_str - //SEG540 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] - //SEG541 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy - //SEG542 [63] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG533 [259] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] + //SEG534 mul8u_error::@8 + //SEG535 [260] call print_str + //SEG536 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] + //SEG537 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy + //SEG538 [63] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str - //SEG543 mul8u_error::@9 - //SEG544 [265] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 + //SEG539 mul8u_error::@9 + //SEG540 [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 lda mf sta print_word.w lda mf+1 sta print_word.w+1 - //SEG545 [266] call print_word - //SEG546 [102] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] - //SEG547 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@9->print_word#0] -- register_copy - //SEG548 [102] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy + //SEG541 [262] call print_word + //SEG542 [102] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] + //SEG543 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@9->print_word#0] -- register_copy + //SEG544 [102] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy jsr print_word - //SEG549 [267] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] - //SEG550 mul8u_error::@10 - //SEG551 [268] call print_ln - //SEG552 [58] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] - //SEG553 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8u_error::@10->print_ln#0] -- register_copy - //SEG554 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_error::@10->print_ln#1] -- register_copy + //SEG545 [263] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] + //SEG546 mul8u_error::@10 + //SEG547 [264] call print_ln + //SEG548 [58] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] + //SEG549 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8u_error::@10->print_ln#0] -- register_copy + //SEG550 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_error::@10->print_ln#1] -- register_copy jsr print_ln - //SEG555 mul8u_error::@return - //SEG556 [269] return + //SEG551 mul8u_error::@return + //SEG552 [265] return rts str: .text "multiply mismatch @" } -//SEG557 mulf8u +//SEG553 mulf8u // Fast multiply two unsigned bytes to a word result // mulf8u(byte register(A) a, byte register(X) b) mulf8u: { .label return = $e - //SEG558 [270] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 - //SEG559 [271] call mulf8u_prepare - //SEG560 [190] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] - //SEG561 [190] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy + //SEG554 [266] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 + //SEG555 [267] call mulf8u_prepare + //SEG556 [186] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] + //SEG557 [186] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare - //SEG562 mulf8u::@2 - //SEG563 [272] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 - //SEG564 [273] call mulf8u_prepared - //SEG565 [185] phi from mulf8u::@2 to mulf8u_prepared [phi:mulf8u::@2->mulf8u_prepared] - //SEG566 [185] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@2->mulf8u_prepared#0] -- register_copy + //SEG558 mulf8u::@2 + //SEG559 [268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 + //SEG560 [269] call mulf8u_prepared + //SEG561 [181] phi from mulf8u::@2 to mulf8u_prepared [phi:mulf8u::@2->mulf8u_prepared] + //SEG562 [181] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@2->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG567 [274] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 - //SEG568 mulf8u::@3 - //SEG569 [275] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 - //SEG570 mulf8u::@return - //SEG571 [276] return + //SEG563 [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 + //SEG564 mulf8u::@3 + //SEG565 [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 + //SEG566 mulf8u::@return + //SEG567 [272] return rts } -//SEG572 muls8u +//SEG568 muls8u // Slow multiplication of unsigned bytes // Calculate an unsigned multiplication by repeated addition // muls8u(byte zeropage(2) a, byte register(X) b) @@ -11992,23 +11904,23 @@ muls8u: { .label return = 8 .label m = 8 .label a = 2 - //SEG573 [277] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 + //SEG569 [273] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 lda a cmp #0 beq b3 - //SEG574 [278] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] - //SEG575 [278] phi (byte) muls8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#0] -- vbuyy=vbuc1 + //SEG570 [274] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] + //SEG571 [274] phi (byte) muls8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG576 [278] phi (word) muls8u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 + //SEG572 [274] phi (word) muls8u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 tya sta m sta m+1 - //SEG577 [278] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] - //SEG578 [278] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy - //SEG579 [278] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy - //SEG580 muls8u::@2 + //SEG573 [274] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] + //SEG574 [274] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy + //SEG575 [274] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy + //SEG576 muls8u::@2 b2: - //SEG581 [279] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuxx + //SEG577 [275] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuxx txa clc adc m @@ -12016,123 +11928,123 @@ muls8u: { lda #0 adc m+1 sta m+1 - //SEG582 [280] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuyy=_inc_vbuyy + //SEG578 [276] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuyy=_inc_vbuyy iny - //SEG583 [281] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuyy_neq_vbuz1_then_la1 + //SEG579 [277] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuyy_neq_vbuz1_then_la1 cpy a bne b2 - //SEG584 [282] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] - //SEG585 [282] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy + //SEG580 [278] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] + //SEG581 [278] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy jmp b1 - //SEG586 [282] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] + //SEG582 [278] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] b3: - //SEG587 [282] phi (word) muls8u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 + //SEG583 [278] phi (word) muls8u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 lda #<0 sta return sta return+1 - //SEG588 muls8u::@1 + //SEG584 muls8u::@1 b1: - //SEG589 muls8u::@return - //SEG590 [283] return + //SEG585 muls8u::@return + //SEG586 [279] return rts } -//SEG591 mulf_tables_cmp +//SEG587 mulf_tables_cmp // Compare the ASM-based mul tables with the KC-based mul tables // Red screen on failure - green on success mulf_tables_cmp: { .label asm_sqr = 8 .label kc_sqr = 4 - //SEG592 [285] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] - //SEG593 [285] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[512]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 + //SEG588 [281] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] + //SEG589 [281] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[512]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 lda #mula_sqr1_lo sta asm_sqr+1 - //SEG594 [285] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[512]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 + //SEG590 [281] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[512]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_lo sta kc_sqr+1 - //SEG595 [285] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1] - //SEG596 [285] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#0] -- register_copy - //SEG597 [285] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#1] -- register_copy - //SEG598 mulf_tables_cmp::@1 + //SEG591 [281] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1] + //SEG592 [281] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#0] -- register_copy + //SEG593 [281] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#1] -- register_copy + //SEG594 mulf_tables_cmp::@1 b1: - //SEG599 [286] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 + //SEG595 [282] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 ldy #0 lda (kc_sqr),y cmp (asm_sqr),y beq b2 - //SEG600 mulf_tables_cmp::@3 - //SEG601 [287] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG596 mulf_tables_cmp::@3 + //SEG597 [283] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG602 [288] call print_str - //SEG603 [63] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] - //SEG604 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 + //SEG598 [284] call print_str + //SEG599 [63] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] + //SEG600 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG605 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 + //SEG601 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG606 mulf_tables_cmp::@6 - //SEG607 [289] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 - //SEG608 [290] call print_word - //SEG609 [102] phi from mulf_tables_cmp::@6 to print_word [phi:mulf_tables_cmp::@6->print_word] - //SEG610 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@6->print_word#0] -- register_copy - //SEG611 [102] phi (word) print_word::w#6 = (word~) print_word::w#11 [phi:mulf_tables_cmp::@6->print_word#1] -- register_copy + //SEG602 mulf_tables_cmp::@6 + //SEG603 [285] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 + //SEG604 [286] call print_word + //SEG605 [102] phi from mulf_tables_cmp::@6 to print_word [phi:mulf_tables_cmp::@6->print_word] + //SEG606 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@6->print_word#0] -- register_copy + //SEG607 [102] phi (word) print_word::w#6 = (word~) print_word::w#11 [phi:mulf_tables_cmp::@6->print_word#1] -- register_copy jsr print_word - //SEG612 [291] phi from mulf_tables_cmp::@6 to mulf_tables_cmp::@7 [phi:mulf_tables_cmp::@6->mulf_tables_cmp::@7] - //SEG613 mulf_tables_cmp::@7 - //SEG614 [292] call print_str - //SEG615 [63] phi from mulf_tables_cmp::@7 to print_str [phi:mulf_tables_cmp::@7->print_str] - //SEG616 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@7->print_str#0] -- register_copy - //SEG617 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@7->print_str#1] -- pbuz1=pbuc1 + //SEG608 [287] phi from mulf_tables_cmp::@6 to mulf_tables_cmp::@7 [phi:mulf_tables_cmp::@6->mulf_tables_cmp::@7] + //SEG609 mulf_tables_cmp::@7 + //SEG610 [288] call print_str + //SEG611 [63] phi from mulf_tables_cmp::@7 to print_str [phi:mulf_tables_cmp::@7->print_str] + //SEG612 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@7->print_str#0] -- register_copy + //SEG613 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@7->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG618 mulf_tables_cmp::@8 - //SEG619 [293] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 + //SEG614 mulf_tables_cmp::@8 + //SEG615 [289] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 lda kc_sqr sta print_word.w lda kc_sqr+1 sta print_word.w+1 - //SEG620 [294] call print_word - //SEG621 [102] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word] - //SEG622 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy - //SEG623 [102] phi (word) print_word::w#6 = (word~) print_word::w#12 [phi:mulf_tables_cmp::@8->print_word#1] -- register_copy + //SEG616 [290] call print_word + //SEG617 [102] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word] + //SEG618 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy + //SEG619 [102] phi (word) print_word::w#6 = (word~) print_word::w#12 [phi:mulf_tables_cmp::@8->print_word#1] -- register_copy jsr print_word - //SEG624 [295] phi from mulf_tables_cmp::@8 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return] - //SEG625 [295] phi (byte*) print_line_cursor#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 + //SEG620 [291] phi from mulf_tables_cmp::@8 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return] + //SEG621 [291] phi (byte*) print_line_cursor#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG626 [295] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#1] -- register_copy - //SEG627 mulf_tables_cmp::@return + //SEG622 [291] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#1] -- register_copy + //SEG623 mulf_tables_cmp::@return breturn: - //SEG628 [296] return + //SEG624 [292] return rts - //SEG629 mulf_tables_cmp::@2 + //SEG625 mulf_tables_cmp::@2 b2: - //SEG630 [297] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG626 [293] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 inc asm_sqr bne !+ inc asm_sqr+1 !: - //SEG631 [298] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG627 [294] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 inc kc_sqr bne !+ inc kc_sqr+1 !: - //SEG632 [299] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG628 [295] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 -- pbuz1_lt_pbuc1_then_la1 lda kc_sqr+1 cmp #>mulf_sqr1_lo+$200*4 bcc b1 @@ -12141,52 +12053,52 @@ mulf_tables_cmp: { cmp #mulf_tables_cmp::@5] - //SEG634 mulf_tables_cmp::@5 - //SEG635 [301] call print_str - //SEG636 [63] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str] - //SEG637 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@5->print_str#0] -- pbuz1=pbuc1 + //SEG629 [296] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@5 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@5] + //SEG630 mulf_tables_cmp::@5 + //SEG631 [297] call print_str + //SEG632 [63] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str] + //SEG633 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@5->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG638 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@5->print_str#1] -- pbuz1=pbuc1 + //SEG634 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@5->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG639 [302] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@10 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@10] - //SEG640 mulf_tables_cmp::@10 - //SEG641 [303] call print_ln - //SEG642 [58] phi from mulf_tables_cmp::@10 to print_ln [phi:mulf_tables_cmp::@10->print_ln] - //SEG643 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@10->print_ln#0] -- register_copy - //SEG644 [58] phi (byte*) print_line_cursor#45 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@10->print_ln#1] -- pbuz1=pbuc1 + //SEG635 [298] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@10 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@10] + //SEG636 mulf_tables_cmp::@10 + //SEG637 [299] call print_ln + //SEG638 [58] phi from mulf_tables_cmp::@10 to print_ln [phi:mulf_tables_cmp::@10->print_ln] + //SEG639 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@10->print_ln#0] -- register_copy + //SEG640 [58] phi (byte*) print_line_cursor#45 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@10->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln - //SEG645 [304] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG641 [300] (byte*~) print_char_cursor#225 ← (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 - //SEG646 [295] phi from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return] - //SEG647 [295] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#0] -- register_copy - //SEG648 [295] phi (byte*) print_char_cursor#31 = (byte*~) print_char_cursor#225 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#1] -- register_copy + //SEG642 [291] phi from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return] + //SEG643 [291] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#0] -- register_copy + //SEG644 [291] phi (byte*) print_char_cursor#31 = (byte*~) print_char_cursor#225 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#1] -- register_copy jmp breturn str: .text "multiply table mismatch at @" str1: .text " / @" str2: .text "multiply tables match!@" } -//SEG649 mulf_init_asm +//SEG645 mulf_init_asm // Initialize the multiplication tables using ASM code from // http://codebase64.org/doku.php?id=base:seriously_fast_multiplication mulf_init_asm: { // Ensure the ASM tables are not detected as unused by the optimizer .label mem = $ff - //SEG650 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } + //SEG646 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } ldx #0 txa .byte $c9 @@ -12225,23 +12137,23 @@ mulf_init_asm: { dey inx bne !- - //SEG651 [306] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG647 [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr1_lo sta mem - //SEG652 [307] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG648 [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr1_hi sta mem - //SEG653 [308] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG649 [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr2_lo sta mem - //SEG654 [309] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG650 [305] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr2_hi sta mem - //SEG655 mulf_init_asm::@return - //SEG656 [310] return + //SEG651 mulf_init_asm::@return + //SEG652 [306] return rts } -//SEG657 mulf_init +//SEG653 mulf_init // Initialize the mulf_sqr multiplication tables with f(x)=int(x*x/4) mulf_init: { .label sqr1_hi = 6 @@ -12251,70 +12163,70 @@ mulf_init: { .label sqr2_hi = 6 .label sqr2_lo = 4 .label dir = 2 - //SEG658 [312] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] - //SEG659 [312] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG654 [308] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG655 [308] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG660 [312] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG656 [308] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG661 [312] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG657 [308] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG662 [312] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG658 [308] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #<0 sta sqr sta sqr+1 - //SEG663 [312] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 + //SEG659 [308] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 tax - //SEG664 [312] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] - //SEG665 [312] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG666 [312] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG667 [312] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG668 [312] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG669 [312] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy - //SEG670 mulf_init::@1 + //SEG660 [308] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG661 [308] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG662 [308] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG663 [308] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG664 [308] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG665 [308] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG666 mulf_init::@1 b1: - //SEG671 [313] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG667 [309] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG672 [314] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG668 [310] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG673 [315] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 + //SEG669 [311] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 cmp #0 bne b2 - //SEG674 mulf_init::@5 - //SEG675 [316] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG670 mulf_init::@5 + //SEG671 [312] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG676 [317] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG672 [313] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG677 [318] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] - //SEG678 [318] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy - //SEG679 [318] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy - //SEG680 mulf_init::@2 + //SEG673 [314] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG674 [314] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy + //SEG675 [314] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy + //SEG676 mulf_init::@2 b2: - //SEG681 [319] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG677 [315] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG682 [320] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa + //SEG678 [316] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG683 [321] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG679 [317] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG684 [322] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa + //SEG680 [318] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa sta (sqr1_hi),y - //SEG685 [323] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG681 [319] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG686 [324] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG682 [320] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -12322,127 +12234,127 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG687 [325] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG683 [321] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG688 [326] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG684 [322] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1 lda sqr1_lo cmp #mulf_init::@3] - //SEG690 [327] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 + //SEG685 [323] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] + //SEG686 [323] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG691 [327] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 + //SEG687 [323] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG692 [327] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 + //SEG688 [323] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG693 [327] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 + //SEG689 [323] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 ldx #-1 - //SEG694 [327] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] - //SEG695 [327] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy - //SEG696 [327] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy - //SEG697 [327] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy - //SEG698 [327] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy - //SEG699 mulf_init::@3 + //SEG690 [323] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG691 [323] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG692 [323] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG693 [323] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG694 [323] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG695 mulf_init::@3 b3: - //SEG700 [328] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG696 [324] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG701 [329] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG697 [325] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_hi,x sta (sqr2_hi),y - //SEG702 [330] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG698 [326] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG703 [331] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG699 [327] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - //SEG704 [332] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 + //SEG700 [328] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 cpx #0 bne b4 - //SEG705 [333] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] - //SEG706 [333] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG701 [329] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG702 [329] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 lda #1 sta dir - //SEG707 mulf_init::@4 + //SEG703 mulf_init::@4 b4: - //SEG708 [334] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG704 [330] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG709 [335] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 + //SEG705 [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b3 lda sqr2_lo cmp #mulf_init::@12] - //SEG716 mulf_init::@12 - //SEG717 [333] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] - //SEG718 [333] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG711 [335] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] + //SEG712 mulf_init::@12 + //SEG713 [329] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG714 [329] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy } -//SEG719 print_cls +//SEG715 print_cls // Clear the screen. Also resets current line/char cursor. print_cls: { .label sc = 4 - //SEG720 [341] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG721 [341] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG716 [337] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG717 [337] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - //SEG722 [341] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG723 [341] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG724 print_cls::@1 + //SEG718 [337] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG719 [337] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG720 print_cls::@1 b1: - //SEG725 [342] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG721 [338] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG726 [343] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG722 [339] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG727 [344] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG723 [340] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 lda sc cmp #<$400+$3e8 bne b1 - //SEG728 print_cls::@return - //SEG729 [345] return + //SEG724 print_cls::@return + //SEG725 [341] return rts } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/test-multiply-8bit.sym b/src/test/ref/test-multiply-8bit.sym index c35d4dbfd..dfc0aaac1 100644 --- a/src/test/ref/test-multiply-8bit.sym +++ b/src/test/ref/test-multiply-8bit.sym @@ -11,11 +11,9 @@ (label) main::@5 (label) main::@return (signed word()) mul8s((signed byte) mul8s::a , (signed byte) mul8s::b) -(byte~) mul8s::$11 reg byte a 20.0 (byte~) mul8s::$12 reg byte a 4.0 (byte~) mul8s::$16 reg byte a 4.0 (byte~) mul8s::$17 reg byte a 4.0 -(byte~) mul8s::$5 reg byte a 20.0 (byte~) mul8s::$6 reg byte a 4.0 (label) mul8s::@1 (label) mul8s::@2 @@ -24,15 +22,15 @@ (label) mul8s::@6 (label) mul8s::@return (signed byte) mul8s::a -(signed byte) mul8s::a#0 a zp ZP_BYTE:2 6.4375 +(signed byte) mul8s::a#0 a zp ZP_BYTE:2 7.357142857142858 (signed byte) mul8s::b -(signed byte) mul8s::b#0 reg byte y 8.583333333333332 +(signed byte) mul8s::b#0 reg byte y 9.363636363636363 (word) mul8s::m (word) mul8s::m#0 m zp ZP_WORD:12 2.0 (word) mul8s::m#1 m zp ZP_WORD:12 4.0 (word) mul8s::m#2 m zp ZP_WORD:12 4.0 (word) mul8s::m#4 m zp ZP_WORD:12 1.3333333333333333 -(word) mul8s::m#5 m zp ZP_WORD:12 2.4 +(word) mul8s::m#5 m zp ZP_WORD:12 2.5 (signed word) mul8s::return (signed word) mul8s::return#2 return zp ZP_WORD:12 202.0 (void()) mul8s_compare() @@ -196,11 +194,9 @@ (signed word) mulf8s::return#0 return zp ZP_WORD:14 34.33333333333333 (signed word) mulf8s::return#2 return zp ZP_WORD:14 202.0 (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) -(byte~) mulf8s_prepared::$10 reg byte a 20.0 (byte~) mulf8s_prepared::$11 reg byte a 4.0 (byte~) mulf8s_prepared::$15 reg byte a 4.0 (byte~) mulf8s_prepared::$16 reg byte a 4.0 -(byte~) mulf8s_prepared::$4 reg byte a 20.0 (byte~) mulf8s_prepared::$5 reg byte a 4.0 (label) mulf8s_prepared::@1 (label) mulf8s_prepared::@2 @@ -209,13 +205,13 @@ (label) mulf8s_prepared::@6 (label) mulf8s_prepared::@return (signed byte) mulf8s_prepared::b -(signed byte) mulf8s_prepared::b#0 b zp ZP_BYTE:3 0.36363636363636365 +(signed byte) mulf8s_prepared::b#0 b zp ZP_BYTE:3 0.4 (word) mulf8s_prepared::m (word) mulf8s_prepared::m#0 m zp ZP_WORD:14 2.0 (word) mulf8s_prepared::m#1 m zp ZP_WORD:14 4.0 (word) mulf8s_prepared::m#2 m zp ZP_WORD:14 4.0 (word) mulf8s_prepared::m#4 m zp ZP_WORD:14 1.3333333333333333 -(word) mulf8s_prepared::m#5 m zp ZP_WORD:14 2.4 +(word) mulf8s_prepared::m#5 m zp ZP_WORD:14 2.5 (signed byte*) mulf8s_prepared::memA (const signed byte*) mulf8s_prepared::memA#0 memA = ((signed byte*))(byte/word/signed word/dword/signed dword) 253 (signed word) mulf8s_prepared::return @@ -493,17 +489,13 @@ reg byte y [ mul8s::b#0 ] reg byte x [ mul8s_error::a#0 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -reg byte a [ mul8s::$5 ] reg byte a [ mul8s::$6 ] reg byte a [ mul8s::$16 ] -reg byte a [ mul8s::$11 ] reg byte a [ mul8s::$12 ] reg byte a [ mul8s::$17 ] reg byte a [ mul8u::$1 ] -reg byte a [ mulf8s_prepared::$4 ] reg byte a [ mulf8s_prepared::$5 ] reg byte a [ mulf8s_prepared::$15 ] -reg byte a [ mulf8s_prepared::$10 ] reg byte a [ mulf8s_prepared::$11 ] reg byte a [ mulf8s_prepared::$16 ] reg byte x [ muls8u::b#0 ]